úÎ!EHB¼,      !"#$%&'()*+Safe)gloss-algorithms&Represents a Quadrant in the 2D plane.gloss-algorithms North Westgloss-algorithms North Eastgloss-algorithms South Westgloss-algorithms South Eastgloss-algorithms!A list of all quadrants. Same as  [NW .. SE].None$ gloss-algorithmsAn integral coordinate. gloss-algorithmsyA rectangular area of the 2D plane. We keep the type abstract to ensure that invalid extents cannot be constructed. gloss-algorithmsRConstruct an extent. The north value must be > south, and east > west, else ,. gloss-algorithms&Take the NSEW components of an extent. gloss-algorithms A square extent of a given size.gloss-algorithms&Get the width and height of an extent.gloss-algorithms<Check if an extent is a square with a width and height of 1.gloss-algorithms1Check whether a coordinate lies inside an extent.gloss-algorithms,Check whether a point lies inside an extent.gloss-algorithms8Get the coordinate that lies at the center of an extent.gloss-algorithms"Cut one quadrant out of an extent.gloss-algorithms6Get the quadrant that this coordinate lies in, if any.gloss-algorithms8Constuct a path to a particular coordinate in an extent.gloss-algorithmsªIf a line segment (P1-P2) intersects the outer edge of an extent then return the intersection point, that is closest to P1, if any. If P1 is inside the extent then -. † P2 / ----/- | / | + | /------ / P1 gloss-algorithmshCheck whether a line segment's endpoints are inside an extent, or if it intersects with the boundary. gloss-algorithms y max (north)gloss-algorithms y min (south)gloss-algorithms x max (east)gloss-algorithms x min (west)  NoneSX4Xgloss-algorithmsThe quad tree structure.gloss-algorithmsAn empty node.gloss-algorithmsA leaf containint some value.gloss-algorithmsA node with four children.gloss-algorithmsA  tree.gloss-algorithms A node with . for all its branches. gloss-algorithmsLGet a quadrant from a node. If the tree does not have an outer node then -.!gloss-algorithmssApply a function to a quadrant of a node. If the tree does not have an outer node then return the original tree."gloss-algorithmsdInsert a value into the tree at the position given by a path. If the path intersects an existing  then return the original tree.#gloss-algorithms{Insert a value into the node containing this coordinate. The node is created at maximum depth, corresponding to an unit  .$gloss-algorithms$Lookup a node based on a path to it.%gloss-algorithms+Lookup an element based given a path to it.&gloss-algorithms=Lookup a node if a tree given a coordinate which it contains.'gloss-algorithmsIFlatten a QuadTree into a list of its contained values, with coordinates.(gloss-algorithmsEFlatten a QuadTree into a list of its contained values, with extents.&gloss-algorithms"Extent that covers the whole tree.gloss-algorithms$Coordinate of the value of interest.'gloss-algorithms"Extent that covers the whole tree.(gloss-algorithms"Extent that covers the whole tree. !"#$%&'( !"#$%&'(NoneSXB¨*gloss-algorithms±The quadtree contains cells of unit extent (NetHack style). Given a line segement (P1-P2) through the tree, get the cell closest to P1 that intersects the segment, if any.+gloss-algorithms¥The quadtree contains cells of unit extent (NetHack style). Given a line segment (P1-P2) through the tree, return the list of cells that intersect the segment.*gloss-algorithms(P1) Starting point of seg.gloss-algorithms(P2) Final point of seg.gloss-algorithms Extent convering the whole tree.gloss-algorithms The tree.gloss-algorithms;Intersection point, extent of cell, value of cell (if any).+gloss-algorithms(P1) Starting point of seg.gloss-algorithms(P2) Final point of seg.gloss-algorithmsExtent covering the whole tree.gloss-algorithms The tree.gloss-algorithms2Intersection point, extent of cell, value of cell.*+*+.      !"#$%&'()*+,-./012314560gloss-algorithms-1.13.0.2-GfbiwQiSHBIIeU8Q5TgSUUGraphics.Gloss.Data.QuadGraphics.Gloss.Data.ExtentGraphics.Gloss.Data.QuadTree!Graphics.Gloss.Algorithms.RayCastQuadNWNESWSEallQuads $fShowQuad$fEqQuad $fEnumQuadCoordExtent makeExtent takeExtent squareExtent sizeOfExtent isUnitExtent coordInExtent pointInExtentcenterCoordOfExtentcutQuadOfExtent quadOfCoord pathToCoordintersectSegExtenttouchesSegExtent $fEqExtent $fShowExtentQuadTreeTNilTLeafTNode emptyTree emptyNodetakeQuadOfTree liftToQuad insertByPath insertByCoordlookupNodeByPath lookupByPath lookupByCoordflattenQuadTreeflattenQuadTreeWithExtents$fShowQuadTreecastSegIntoCellularQuadTreetraceSegIntoCellularQuadTreebaseGHC.Errerror GHC.MaybeNothing