gloss-algorithms-1.13.0.1: Data structures and algorithms for working with 2D graphics.

Description

A QuadTree can be used to recursively divide up 2D space into quadrants. The smallest division corresponds to an unit Extent, so the total depth of the tree will depend on what sized Extent you start with.

Synopsis

Documentation

Constructors

 TNil An empty node. TLeaf a A leaf containint some value. TNode (QuadTree a) (QuadTree a) (QuadTree a) (QuadTree a) A node with four children.
Instances
 Show a => Show (QuadTree a) Source # Instance detailsDefined in Graphics.Gloss.Data.QuadTree MethodsshowsPrec :: Int -> QuadTree a -> ShowS #show :: QuadTree a -> String #showList :: [QuadTree a] -> ShowS #

A TNil tree.

A node with TNil. for all its branches.

Get a quadrant from a node. If the tree does not have an outer node then Nothing.

Apply a function to a quadrant of a node. If the tree does not have an outer node then return the original tree.

Insert a value into the tree at the position given by a path. If the path intersects an existing TLeaf then return the original tree.

insertByCoord :: Extent -> Coord -> a -> QuadTree a -> Maybe (QuadTree a) Source #

Insert a value into the node containing this coordinate. The node is created at maximum depth, corresponding to an unit Extent.

Lookup a node based on a path to it.

Lookup an element based given a path to it.

Arguments

 :: Extent Extent that covers the whole tree. -> Coord Coordinate of the value of interest. -> QuadTree a -> Maybe a

Lookup a node if a tree given a coordinate which it contains.

Arguments

 :: Extent Extent that covers the whole tree. -> QuadTree a -> [(Coord, a)]

Flatten a QuadTree into a list of its contained values, with coordinates.

Arguments

 :: Extent Extent that covers the whole tree. -> QuadTree a -> [(Extent, a)]

Flatten a QuadTree into a list of its contained values, with extents.