nspace-0.2.0.0: Efficient, infinite-precision 2D and 3D spatial containers.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.QuadTree.Internal

Synopsis

Documentation

data Rect a Source #

An axis-aligned bounding box in 3-space.

Constructors

Rect 

Fields

Instances

Instances details
Functor Rect Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

fmap :: (a -> b) -> Rect a -> Rect b #

(<$) :: a -> Rect b -> Rect a #

Generic (Rect a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Associated Types

type Rep (Rect a) :: Type -> Type #

Methods

from :: Rect a -> Rep (Rect a) x #

to :: Rep (Rect a) x -> Rect a #

Read a => Read (Rect a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Show a => Show (Rect a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

showsPrec :: Int -> Rect a -> ShowS #

show :: Rect a -> String #

showList :: [Rect a] -> ShowS #

Eq a => Eq (Rect a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

(==) :: Rect a -> Rect a -> Bool #

(/=) :: Rect a -> Rect a -> Bool #

Ord a => Ord (Rect a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

compare :: Rect a -> Rect a -> Ordering #

(<) :: Rect a -> Rect a -> Bool #

(<=) :: Rect a -> Rect a -> Bool #

(>) :: Rect a -> Rect a -> Bool #

(>=) :: Rect a -> Rect a -> Bool #

max :: Rect a -> Rect a -> Rect a #

min :: Rect a -> Rect a -> Rect a #

type Rep (Rect a) Source # 
Instance details

Defined in Data.QuadTree.Internal

type Rep (Rect a) = D1 ('MetaData "Rect" "Data.QuadTree.Internal" "nspace-0.2.0.0-JcrzAw5ubjR6TX1H0E6SmC" 'False) (C1 ('MetaCons "Rect" 'PrefixI 'True) (S1 ('MetaSel ('Just "r_pos") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (V2 a)) :*: S1 ('MetaSel ('Just "r_size") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (V2 a))))

r_x :: Rect a -> a Source #

r_y :: Rect a -> a Source #

r_w :: Rect a -> a Source #

r_h :: Rect a -> a Source #

rectContainsRect :: (Num a, Ord a) => Rect a -> Rect a -> Bool Source #

containsRect c1 c2 is true when c2 is inside or equal to c1.

rectContainsPoint :: (Ord a, Num a) => Rect a -> V2 a -> Bool Source #

Does the rect contain a given point?

rectCorners :: Num a => Rect a -> V4 (V2 a) Source #

Get the co-ordinates of the corners of a Rect.

data Free a Source #

Free, but with better instances.

Constructors

Fill a 
Split (V4 (Free a)) 

Instances

Instances details
Foldable Free Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

fold :: Monoid m => Free m -> m #

foldMap :: Monoid m => (a -> m) -> Free a -> m #

foldMap' :: Monoid m => (a -> m) -> Free a -> m #

foldr :: (a -> b -> b) -> b -> Free a -> b #

foldr' :: (a -> b -> b) -> b -> Free a -> b #

foldl :: (b -> a -> b) -> b -> Free a -> b #

foldl' :: (b -> a -> b) -> b -> Free a -> b #

foldr1 :: (a -> a -> a) -> Free a -> a #

foldl1 :: (a -> a -> a) -> Free a -> a #

toList :: Free a -> [a] #

null :: Free a -> Bool #

length :: Free a -> Int #

elem :: Eq a => a -> Free a -> Bool #

maximum :: Ord a => Free a -> a #

minimum :: Ord a => Free a -> a #

sum :: Num a => Free a -> a #

product :: Num a => Free a -> a #

Traversable Free Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

traverse :: Applicative f => (a -> f b) -> Free a -> f (Free b) #

sequenceA :: Applicative f => Free (f a) -> f (Free a) #

mapM :: Monad m => (a -> m b) -> Free a -> m (Free b) #

sequence :: Monad m => Free (m a) -> m (Free a) #

Applicative Free Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

pure :: a -> Free a #

(<*>) :: Free (a -> b) -> Free a -> Free b #

liftA2 :: (a -> b -> c) -> Free a -> Free b -> Free c #

(*>) :: Free a -> Free b -> Free b #

(<*) :: Free a -> Free b -> Free a #

Functor Free Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

fmap :: (a -> b) -> Free a -> Free b #

(<$) :: a -> Free b -> Free a #

Monad Free Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

(>>=) :: Free a -> (a -> Free b) -> Free b #

(>>) :: Free a -> Free b -> Free b #

return :: a -> Free a #

Monoid a => Monoid (Free a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

mempty :: Free a #

mappend :: Free a -> Free a -> Free a #

mconcat :: [Free a] -> Free a #

Semigroup a => Semigroup (Free a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

(<>) :: Free a -> Free a -> Free a #

sconcat :: NonEmpty (Free a) -> Free a #

stimes :: Integral b => b -> Free a -> Free a #

Generic (Free a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Associated Types

type Rep (Free a) :: Type -> Type #

Methods

from :: Free a -> Rep (Free a) x #

to :: Rep (Free a) x -> Free a #

Show a => Show (Free a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

showsPrec :: Int -> Free a -> ShowS #

show :: Free a -> String #

showList :: [Free a] -> ShowS #

Eq a => Eq (Free a) Source # 
Instance details

Defined in Data.QuadTree.Internal

Methods

(==) :: Free a -> Free a -> Bool #

(/=) :: Free a -> Free a -> Bool #

type Rep (Free a) Source # 
Instance details

Defined in Data.QuadTree.Internal

type Rep (Free a) = D1 ('MetaData "Free" "Data.QuadTree.Internal" "nspace-0.2.0.0-JcrzAw5ubjR6TX1H0E6SmC" 'False) (C1 ('MetaCons "Fill" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "Split" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (V4 (Free a)))))

normalize :: (Num a, Ord a) => Rect a -> Rect a Source #

Normalize a Rect so it has a positive r_size.

intersects :: (Ord a, Num a) => Rect a -> Rect a -> Bool Source #

Do two Rects intersect?

rectSize :: Num a => Rect a -> a Source #

Get the area of a Rect.

getIntersect :: (Ord a, Num a) => Rect a -> Rect a -> Maybe (Rect a) Source #

Compute the intersection of two Rects.

unwrap :: Free a -> V4 (Free a) Source #

fuse :: Eq a => Free a -> Free a Source #

Join together Split constructors which all contain the same value.

doFuse :: Eq a => V4 (Free a) -> Free a Source #