 data Boundary = Boundary {
 boundary_corner :: Vertex2 Double
 boundary_size :: Double
 class HasBoundary s where
 boundary_points :: s > [Vertex2 Double]
 boundary_edges :: s > [Edge2 Double]
 boundary_extents :: s > (Vertex2 Double, Vertex2 Double)
 boundary_square :: s > Boundary
 encloses :: Boundary > Boundary > Bool
 intersects :: Intersectable s0 s1 => s0 > s1 > Bool
Documentation
A 2D axis aligned square. The boundary_corner defines the lower bound. The boundary_size is the length of any edge of the square.
The boundary is inclusive on the low extent and exclusive on the max extent.
Used to represent both the 0. 2D axis aligned minimum bounding square of an element.
 The boundary of a quadtree element
Boundary  

class HasBoundary s whereSource
A instance of HasBoundary has an axis aligned boundign square defined that entirely encloses  the space represented by the type.
boundary_points :: s > [Vertex2 Double]Source
boundary_edges :: s > [Edge2 Double]Source
boundary_extents :: s > (Vertex2 Double, Vertex2 Double)Source
boundary_square :: s > BoundarySource
encloses :: Boundary > Boundary > BoolSource
Returns true if the first boundary entirely encloses the second boundary.  This is expected to be reflexive.
intersects :: Intersectable s0 s1 => s0 > s1 > BoolSource