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

Data.OctTree.Internal

Synopsis

Documentation

data Cube a Source #

An axis-aligned bounding box in 3-space.

Constructors

Cube 

Fields

Instances

Instances details
Functor Cube Source # 
Instance details

Defined in Data.OctTree.Internal

Methods

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

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

Generic (Cube a) Source # 
Instance details

Defined in Data.OctTree.Internal

Associated Types

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

Methods

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

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

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

Defined in Data.OctTree.Internal

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

Defined in Data.OctTree.Internal

Methods

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

show :: Cube a -> String #

showList :: [Cube a] -> ShowS #

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

Defined in Data.OctTree.Internal

Methods

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

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

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

Defined in Data.OctTree.Internal

Methods

compare :: Cube a -> Cube a -> Ordering #

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

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

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

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

max :: Cube a -> Cube a -> Cube a #

min :: Cube a -> Cube a -> Cube a #

type Rep (Cube a) Source # 
Instance details

Defined in Data.OctTree.Internal

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

r_x :: Cube a -> a Source #

r_y :: Cube a -> a Source #

r_z :: Cube a -> a Source #

r_w :: Cube a -> a Source #

r_h :: Cube a -> a Source #

r_d :: Cube a -> a Source #

cubeContainsCube :: (Num a, Ord a) => Cube a -> Cube a -> Bool Source #

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

cubeContainsPoint :: (Ord a, Num a) => Cube a -> V3 a -> Bool Source #

Does the cube contain a given point?

cubeCorners :: Num a => Cube a -> Oct (V3 a) Source #

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

data Free a Source #

Free, but with better instances.

Constructors

Fill a 
Split (Oct (Free a)) 

Instances

Instances details
Foldable Free Source # 
Instance details

Defined in Data.OctTree.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.OctTree.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.OctTree.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.OctTree.Internal

Methods

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

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

Monad Free Source # 
Instance details

Defined in Data.OctTree.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.OctTree.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.OctTree.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.OctTree.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.OctTree.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.OctTree.Internal

Methods

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

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

type Rep (Free a) Source # 
Instance details

Defined in Data.OctTree.Internal

type Rep (Free a) = D1 ('MetaData "Free" "Data.OctTree.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 (Oct (Free a)))))

data Oct a Source #

An 8-tuple of values.

Constructors

Oct !(V4 a) !(V4 a) 

Instances

Instances details
Foldable Oct Source # 
Instance details

Defined in Data.OctTree.Internal

Methods

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

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

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

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

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

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

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

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

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

toList :: Oct a -> [a] #

null :: Oct a -> Bool #

length :: Oct a -> Int #

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

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

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

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

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

Traversable Oct Source # 
Instance details

Defined in Data.OctTree.Internal

Methods

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

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

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

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

Applicative Oct Source # 
Instance details

Defined in Data.OctTree.Internal

Methods

pure :: a -> Oct a #

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

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

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

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

Functor Oct Source # 
Instance details

Defined in Data.OctTree.Internal

Methods

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

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

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

Defined in Data.OctTree.Internal

Methods

mempty :: Oct a #

mappend :: Oct a -> Oct a -> Oct a #

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

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

Defined in Data.OctTree.Internal

Methods

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

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

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

Generic (Oct a) Source # 
Instance details

Defined in Data.OctTree.Internal

Associated Types

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

Methods

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

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

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

Defined in Data.OctTree.Internal

Methods

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

show :: Oct a -> String #

showList :: [Oct a] -> ShowS #

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

Defined in Data.OctTree.Internal

Methods

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

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

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

Defined in Data.OctTree.Internal

Methods

compare :: Oct a -> Oct a -> Ordering #

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

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

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

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

max :: Oct a -> Oct a -> Oct a #

min :: Oct a -> Oct a -> Oct a #

type Rep (Oct a) Source # 
Instance details

Defined in Data.OctTree.Internal

type Rep (Oct a) = D1 ('MetaData "Oct" "Data.OctTree.Internal" "nspace-0.2.0.0-JcrzAw5ubjR6TX1H0E6SmC" 'False) (C1 ('MetaCons "Oct" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (V4 a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (V4 a))))

pattern Oct8 :: a -> a -> a -> a -> a -> a -> a -> a -> Oct a Source #

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

Normalize a Cube so it has a positive r_size.

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

Do two Cubes intersect?

cubeSize :: Num a => Cube a -> a Source #

Get the volume of a Cube.

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

Compute the intersection of two Cubes.

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

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

Join together Split constructors which all contain the same value.

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