geomancy-0.2.6.0: Geometry and matrix manipulation
Safe HaskellSafe-Inferred
LanguageHaskell2010

Geomancy

Synopsis

Vectors

Single-precision / float32s

data Vec2 Source #

Instances

Instances details
Storable Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

sizeOf :: Vec2 -> Int #

alignment :: Vec2 -> Int #

peekElemOff :: Ptr Vec2 -> Int -> IO Vec2 #

pokeElemOff :: Ptr Vec2 -> Int -> Vec2 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Vec2 #

pokeByteOff :: Ptr b -> Int -> Vec2 -> IO () #

peek :: Ptr Vec2 -> IO Vec2 #

poke :: Ptr Vec2 -> Vec2 -> IO () #

Floating Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

pi :: Vec2 #

exp :: Vec2 -> Vec2 #

log :: Vec2 -> Vec2 #

sqrt :: Vec2 -> Vec2 #

(**) :: Vec2 -> Vec2 -> Vec2 #

logBase :: Vec2 -> Vec2 -> Vec2 #

sin :: Vec2 -> Vec2 #

cos :: Vec2 -> Vec2 #

tan :: Vec2 -> Vec2 #

asin :: Vec2 -> Vec2 #

acos :: Vec2 -> Vec2 #

atan :: Vec2 -> Vec2 #

sinh :: Vec2 -> Vec2 #

cosh :: Vec2 -> Vec2 #

tanh :: Vec2 -> Vec2 #

asinh :: Vec2 -> Vec2 #

acosh :: Vec2 -> Vec2 #

atanh :: Vec2 -> Vec2 #

log1p :: Vec2 -> Vec2 #

expm1 :: Vec2 -> Vec2 #

log1pexp :: Vec2 -> Vec2 #

log1mexp :: Vec2 -> Vec2 #

Num Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

(+) :: Vec2 -> Vec2 -> Vec2 #

(-) :: Vec2 -> Vec2 -> Vec2 #

(*) :: Vec2 -> Vec2 -> Vec2 #

negate :: Vec2 -> Vec2 #

abs :: Vec2 -> Vec2 #

signum :: Vec2 -> Vec2 #

fromInteger :: Integer -> Vec2 #

Fractional Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

(/) :: Vec2 -> Vec2 -> Vec2 #

recip :: Vec2 -> Vec2 #

fromRational :: Rational -> Vec2 #

Show Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

showsPrec :: Int -> Vec2 -> ShowS #

show :: Vec2 -> String #

showList :: [Vec2] -> ShowS #

NFData Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

rnf :: Vec2 -> () #

Elementwise Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

GlNearest Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Eq Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

(==) :: Vec2 -> Vec2 -> Bool #

(/=) :: Vec2 -> Vec2 -> Bool #

Ord Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

compare :: Vec2 -> Vec2 -> Ordering #

(<) :: Vec2 -> Vec2 -> Bool #

(<=) :: Vec2 -> Vec2 -> Bool #

(>) :: Vec2 -> Vec2 -> Bool #

(>=) :: Vec2 -> Vec2 -> Bool #

max :: Vec2 -> Vec2 -> Vec2 #

min :: Vec2 -> Vec2 -> Vec2 #

Block Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Associated Types

type PackedSize Vec2 :: Nat #

Methods

alignment140 :: proxy Vec2 -> Int #

sizeOf140 :: proxy Vec2 -> Int #

isStruct :: proxy Vec2 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a Vec2 -> m Vec2 #

write140 :: MonadIO m => Ptr a -> Diff a Vec2 -> Vec2 -> m () #

alignment430 :: proxy Vec2 -> Int #

sizeOf430 :: proxy Vec2 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a Vec2 -> m Vec2 #

write430 :: MonadIO m => Ptr a -> Diff a Vec2 -> Vec2 -> m () #

sizeOfPacked :: proxy Vec2 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a Vec2 -> m Vec2 #

writePacked :: MonadIO m => Ptr a -> Diff a Vec2 -> Vec2 -> m () #

MonoFunctor Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

omap :: (Element Vec2 -> Element Vec2) -> Vec2 -> Vec2 #

MonoPointed Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

opoint :: Element Vec2 -> Vec2 #

GlModf Vec2 Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Methods

glModf :: Vec2 -> (Vec2, Vec2) Source #

VectorSpace Vec2 Float Source # 
Instance details

Defined in Geomancy.Vec2

type PackedSize Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

type PackedSize Vec2 = 8
type Element Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

withVec2 :: Vec2 -> (Float -> Float -> r) -> r Source #

pattern WithVec2 :: Float -> Float -> Vec2 Source #

data Vec3 Source #

Instances

Instances details
Storable Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

sizeOf :: Vec3 -> Int #

alignment :: Vec3 -> Int #

peekElemOff :: Ptr Vec3 -> Int -> IO Vec3 #

pokeElemOff :: Ptr Vec3 -> Int -> Vec3 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Vec3 #

pokeByteOff :: Ptr b -> Int -> Vec3 -> IO () #

peek :: Ptr Vec3 -> IO Vec3 #

poke :: Ptr Vec3 -> Vec3 -> IO () #

Floating Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

pi :: Vec3 #

exp :: Vec3 -> Vec3 #

log :: Vec3 -> Vec3 #

sqrt :: Vec3 -> Vec3 #

(**) :: Vec3 -> Vec3 -> Vec3 #

logBase :: Vec3 -> Vec3 -> Vec3 #

sin :: Vec3 -> Vec3 #

cos :: Vec3 -> Vec3 #

tan :: Vec3 -> Vec3 #

asin :: Vec3 -> Vec3 #

acos :: Vec3 -> Vec3 #

atan :: Vec3 -> Vec3 #

sinh :: Vec3 -> Vec3 #

cosh :: Vec3 -> Vec3 #

tanh :: Vec3 -> Vec3 #

asinh :: Vec3 -> Vec3 #

acosh :: Vec3 -> Vec3 #

atanh :: Vec3 -> Vec3 #

log1p :: Vec3 -> Vec3 #

expm1 :: Vec3 -> Vec3 #

log1pexp :: Vec3 -> Vec3 #

log1mexp :: Vec3 -> Vec3 #

Num Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

(+) :: Vec3 -> Vec3 -> Vec3 #

(-) :: Vec3 -> Vec3 -> Vec3 #

(*) :: Vec3 -> Vec3 -> Vec3 #

negate :: Vec3 -> Vec3 #

abs :: Vec3 -> Vec3 #

signum :: Vec3 -> Vec3 #

fromInteger :: Integer -> Vec3 #

Fractional Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

(/) :: Vec3 -> Vec3 -> Vec3 #

recip :: Vec3 -> Vec3 #

fromRational :: Rational -> Vec3 #

Show Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

showsPrec :: Int -> Vec3 -> ShowS #

show :: Vec3 -> String #

showList :: [Vec3] -> ShowS #

NFData Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

rnf :: Vec3 -> () #

Elementwise Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

GlNearest Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Eq Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

(==) :: Vec3 -> Vec3 -> Bool #

(/=) :: Vec3 -> Vec3 -> Bool #

Ord Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

compare :: Vec3 -> Vec3 -> Ordering #

(<) :: Vec3 -> Vec3 -> Bool #

(<=) :: Vec3 -> Vec3 -> Bool #

(>) :: Vec3 -> Vec3 -> Bool #

(>=) :: Vec3 -> Vec3 -> Bool #

max :: Vec3 -> Vec3 -> Vec3 #

min :: Vec3 -> Vec3 -> Vec3 #

Block Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Associated Types

type PackedSize Vec3 :: Nat #

Methods

alignment140 :: proxy Vec3 -> Int #

sizeOf140 :: proxy Vec3 -> Int #

isStruct :: proxy Vec3 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a Vec3 -> m Vec3 #

write140 :: MonadIO m => Ptr a -> Diff a Vec3 -> Vec3 -> m () #

alignment430 :: proxy Vec3 -> Int #

sizeOf430 :: proxy Vec3 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a Vec3 -> m Vec3 #

write430 :: MonadIO m => Ptr a -> Diff a Vec3 -> Vec3 -> m () #

sizeOfPacked :: proxy Vec3 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a Vec3 -> m Vec3 #

writePacked :: MonadIO m => Ptr a -> Diff a Vec3 -> Vec3 -> m () #

MonoFunctor Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

omap :: (Element Vec3 -> Element Vec3) -> Vec3 -> Vec3 #

MonoPointed Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

opoint :: Element Vec3 -> Vec3 #

GlModf Vec3 Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Methods

glModf :: Vec3 -> (Vec3, Vec3) Source #

VectorSpace Vec3 Float Source # 
Instance details

Defined in Geomancy.Vec3

type PackedSize Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

type PackedSize Vec3 = 12
type Element Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

withVec3 :: Vec3 -> (Float -> Float -> Float -> r) -> r Source #

pattern WithVec3 :: Float -> Float -> Float -> Vec3 Source #

data Vec4 Source #

Instances

Instances details
Storable Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

sizeOf :: Vec4 -> Int #

alignment :: Vec4 -> Int #

peekElemOff :: Ptr Vec4 -> Int -> IO Vec4 #

pokeElemOff :: Ptr Vec4 -> Int -> Vec4 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Vec4 #

pokeByteOff :: Ptr b -> Int -> Vec4 -> IO () #

peek :: Ptr Vec4 -> IO Vec4 #

poke :: Ptr Vec4 -> Vec4 -> IO () #

Floating Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

pi :: Vec4 #

exp :: Vec4 -> Vec4 #

log :: Vec4 -> Vec4 #

sqrt :: Vec4 -> Vec4 #

(**) :: Vec4 -> Vec4 -> Vec4 #

logBase :: Vec4 -> Vec4 -> Vec4 #

sin :: Vec4 -> Vec4 #

cos :: Vec4 -> Vec4 #

tan :: Vec4 -> Vec4 #

asin :: Vec4 -> Vec4 #

acos :: Vec4 -> Vec4 #

atan :: Vec4 -> Vec4 #

sinh :: Vec4 -> Vec4 #

cosh :: Vec4 -> Vec4 #

tanh :: Vec4 -> Vec4 #

asinh :: Vec4 -> Vec4 #

acosh :: Vec4 -> Vec4 #

atanh :: Vec4 -> Vec4 #

log1p :: Vec4 -> Vec4 #

expm1 :: Vec4 -> Vec4 #

log1pexp :: Vec4 -> Vec4 #

log1mexp :: Vec4 -> Vec4 #

Num Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

(+) :: Vec4 -> Vec4 -> Vec4 #

(-) :: Vec4 -> Vec4 -> Vec4 #

(*) :: Vec4 -> Vec4 -> Vec4 #

negate :: Vec4 -> Vec4 #

abs :: Vec4 -> Vec4 #

signum :: Vec4 -> Vec4 #

fromInteger :: Integer -> Vec4 #

Fractional Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

(/) :: Vec4 -> Vec4 -> Vec4 #

recip :: Vec4 -> Vec4 #

fromRational :: Rational -> Vec4 #

Show Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

showsPrec :: Int -> Vec4 -> ShowS #

show :: Vec4 -> String #

showList :: [Vec4] -> ShowS #

NFData Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

rnf :: Vec4 -> () #

Elementwise Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

GlNearest Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Eq Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

(==) :: Vec4 -> Vec4 -> Bool #

(/=) :: Vec4 -> Vec4 -> Bool #

Ord Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

compare :: Vec4 -> Vec4 -> Ordering #

(<) :: Vec4 -> Vec4 -> Bool #

(<=) :: Vec4 -> Vec4 -> Bool #

(>) :: Vec4 -> Vec4 -> Bool #

(>=) :: Vec4 -> Vec4 -> Bool #

max :: Vec4 -> Vec4 -> Vec4 #

min :: Vec4 -> Vec4 -> Vec4 #

Block Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Associated Types

type PackedSize Vec4 :: Nat #

Methods

alignment140 :: proxy Vec4 -> Int #

sizeOf140 :: proxy Vec4 -> Int #

isStruct :: proxy Vec4 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a Vec4 -> m Vec4 #

write140 :: MonadIO m => Ptr a -> Diff a Vec4 -> Vec4 -> m () #

alignment430 :: proxy Vec4 -> Int #

sizeOf430 :: proxy Vec4 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a Vec4 -> m Vec4 #

write430 :: MonadIO m => Ptr a -> Diff a Vec4 -> Vec4 -> m () #

sizeOfPacked :: proxy Vec4 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a Vec4 -> m Vec4 #

writePacked :: MonadIO m => Ptr a -> Diff a Vec4 -> Vec4 -> m () #

MonoFunctor Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

omap :: (Element Vec4 -> Element Vec4) -> Vec4 -> Vec4 #

MonoPointed Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

opoint :: Element Vec4 -> Vec4 #

GlModf Vec4 Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Methods

glModf :: Vec4 -> (Vec4, Vec4) Source #

VectorSpace Vec4 Float Source # 
Instance details

Defined in Geomancy.Vec4

type PackedSize Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

type PackedSize Vec4 = 16
type Element Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

withVec4 :: Vec4 -> (Float -> Float -> Float -> Float -> r) -> r Source #

pattern WithVec4 :: Float -> Float -> Float -> Float -> Vec4 Source #

Signed / int32s

data IVec2 Source #

Instances

Instances details
Storable IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Methods

sizeOf :: IVec2 -> Int #

alignment :: IVec2 -> Int #

peekElemOff :: Ptr IVec2 -> Int -> IO IVec2 #

pokeElemOff :: Ptr IVec2 -> Int -> IVec2 -> IO () #

peekByteOff :: Ptr b -> Int -> IO IVec2 #

pokeByteOff :: Ptr b -> Int -> IVec2 -> IO () #

peek :: Ptr IVec2 -> IO IVec2 #

poke :: Ptr IVec2 -> IVec2 -> IO () #

Ix IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Num IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Show IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Methods

showsPrec :: Int -> IVec2 -> ShowS #

show :: IVec2 -> String #

showList :: [IVec2] -> ShowS #

NFData IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Methods

rnf :: IVec2 -> () #

Elementwise IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Eq IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Methods

(==) :: IVec2 -> IVec2 -> Bool #

(/=) :: IVec2 -> IVec2 -> Bool #

Ord IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Methods

compare :: IVec2 -> IVec2 -> Ordering #

(<) :: IVec2 -> IVec2 -> Bool #

(<=) :: IVec2 -> IVec2 -> Bool #

(>) :: IVec2 -> IVec2 -> Bool #

(>=) :: IVec2 -> IVec2 -> Bool #

max :: IVec2 -> IVec2 -> IVec2 #

min :: IVec2 -> IVec2 -> IVec2 #

Block IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Associated Types

type PackedSize IVec2 :: Nat #

Methods

alignment140 :: proxy IVec2 -> Int #

sizeOf140 :: proxy IVec2 -> Int #

isStruct :: proxy IVec2 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a IVec2 -> m IVec2 #

write140 :: MonadIO m => Ptr a -> Diff a IVec2 -> IVec2 -> m () #

alignment430 :: proxy IVec2 -> Int #

sizeOf430 :: proxy IVec2 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a IVec2 -> m IVec2 #

write430 :: MonadIO m => Ptr a -> Diff a IVec2 -> IVec2 -> m () #

sizeOfPacked :: proxy IVec2 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a IVec2 -> m IVec2 #

writePacked :: MonadIO m => Ptr a -> Diff a IVec2 -> IVec2 -> m () #

MonoFunctor IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Methods

omap :: (Element IVec2 -> Element IVec2) -> IVec2 -> IVec2 #

MonoPointed IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Methods

opoint :: Element IVec2 -> IVec2 #

type PackedSize IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

type PackedSize IVec2 = 8
type Element IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

withIVec2 :: IVec2 -> (Int32 -> Int32 -> r) -> r Source #

pattern WithIVec2 :: Int32 -> Int32 -> IVec2 Source #

data IVec3 Source #

Instances

Instances details
Storable IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Methods

sizeOf :: IVec3 -> Int #

alignment :: IVec3 -> Int #

peekElemOff :: Ptr IVec3 -> Int -> IO IVec3 #

pokeElemOff :: Ptr IVec3 -> Int -> IVec3 -> IO () #

peekByteOff :: Ptr b -> Int -> IO IVec3 #

pokeByteOff :: Ptr b -> Int -> IVec3 -> IO () #

peek :: Ptr IVec3 -> IO IVec3 #

poke :: Ptr IVec3 -> IVec3 -> IO () #

Ix IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Num IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Show IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Methods

showsPrec :: Int -> IVec3 -> ShowS #

show :: IVec3 -> String #

showList :: [IVec3] -> ShowS #

NFData IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Methods

rnf :: IVec3 -> () #

Elementwise IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Eq IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Methods

(==) :: IVec3 -> IVec3 -> Bool #

(/=) :: IVec3 -> IVec3 -> Bool #

Ord IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Methods

compare :: IVec3 -> IVec3 -> Ordering #

(<) :: IVec3 -> IVec3 -> Bool #

(<=) :: IVec3 -> IVec3 -> Bool #

(>) :: IVec3 -> IVec3 -> Bool #

(>=) :: IVec3 -> IVec3 -> Bool #

max :: IVec3 -> IVec3 -> IVec3 #

min :: IVec3 -> IVec3 -> IVec3 #

Block IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Associated Types

type PackedSize IVec3 :: Nat #

Methods

alignment140 :: proxy IVec3 -> Int #

sizeOf140 :: proxy IVec3 -> Int #

isStruct :: proxy IVec3 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a IVec3 -> m IVec3 #

write140 :: MonadIO m => Ptr a -> Diff a IVec3 -> IVec3 -> m () #

alignment430 :: proxy IVec3 -> Int #

sizeOf430 :: proxy IVec3 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a IVec3 -> m IVec3 #

write430 :: MonadIO m => Ptr a -> Diff a IVec3 -> IVec3 -> m () #

sizeOfPacked :: proxy IVec3 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a IVec3 -> m IVec3 #

writePacked :: MonadIO m => Ptr a -> Diff a IVec3 -> IVec3 -> m () #

MonoFunctor IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Methods

omap :: (Element IVec3 -> Element IVec3) -> IVec3 -> IVec3 #

MonoPointed IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Methods

opoint :: Element IVec3 -> IVec3 #

type PackedSize IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

type PackedSize IVec3 = 12
type Element IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

withIVec3 :: IVec3 -> (Int32 -> Int32 -> Int32 -> r) -> r Source #

pattern WithIVec3 :: Int32 -> Int32 -> Int32 -> IVec3 Source #

data IVec4 Source #

Instances

Instances details
Storable IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Methods

sizeOf :: IVec4 -> Int #

alignment :: IVec4 -> Int #

peekElemOff :: Ptr IVec4 -> Int -> IO IVec4 #

pokeElemOff :: Ptr IVec4 -> Int -> IVec4 -> IO () #

peekByteOff :: Ptr b -> Int -> IO IVec4 #

pokeByteOff :: Ptr b -> Int -> IVec4 -> IO () #

peek :: Ptr IVec4 -> IO IVec4 #

poke :: Ptr IVec4 -> IVec4 -> IO () #

Ix IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Num IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Show IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Methods

showsPrec :: Int -> IVec4 -> ShowS #

show :: IVec4 -> String #

showList :: [IVec4] -> ShowS #

NFData IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Methods

rnf :: IVec4 -> () #

Elementwise IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Eq IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Methods

(==) :: IVec4 -> IVec4 -> Bool #

(/=) :: IVec4 -> IVec4 -> Bool #

Ord IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Methods

compare :: IVec4 -> IVec4 -> Ordering #

(<) :: IVec4 -> IVec4 -> Bool #

(<=) :: IVec4 -> IVec4 -> Bool #

(>) :: IVec4 -> IVec4 -> Bool #

(>=) :: IVec4 -> IVec4 -> Bool #

max :: IVec4 -> IVec4 -> IVec4 #

min :: IVec4 -> IVec4 -> IVec4 #

Block IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Associated Types

type PackedSize IVec4 :: Nat #

Methods

alignment140 :: proxy IVec4 -> Int #

sizeOf140 :: proxy IVec4 -> Int #

isStruct :: proxy IVec4 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a IVec4 -> m IVec4 #

write140 :: MonadIO m => Ptr a -> Diff a IVec4 -> IVec4 -> m () #

alignment430 :: proxy IVec4 -> Int #

sizeOf430 :: proxy IVec4 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a IVec4 -> m IVec4 #

write430 :: MonadIO m => Ptr a -> Diff a IVec4 -> IVec4 -> m () #

sizeOfPacked :: proxy IVec4 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a IVec4 -> m IVec4 #

writePacked :: MonadIO m => Ptr a -> Diff a IVec4 -> IVec4 -> m () #

MonoFunctor IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Methods

omap :: (Element IVec4 -> Element IVec4) -> IVec4 -> IVec4 #

MonoPointed IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Methods

opoint :: Element IVec4 -> IVec4 #

type PackedSize IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

type PackedSize IVec4 = 16
type Element IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

withIVec4 :: IVec4 -> (Int32 -> Int32 -> Int32 -> Int32 -> r) -> r Source #

pattern WithIVec4 :: Int32 -> Int32 -> Int32 -> Int32 -> IVec4 Source #

Unsigned / word32s

data UVec2 Source #

Instances

Instances details
Storable UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Methods

sizeOf :: UVec2 -> Int #

alignment :: UVec2 -> Int #

peekElemOff :: Ptr UVec2 -> Int -> IO UVec2 #

pokeElemOff :: Ptr UVec2 -> Int -> UVec2 -> IO () #

peekByteOff :: Ptr b -> Int -> IO UVec2 #

pokeByteOff :: Ptr b -> Int -> UVec2 -> IO () #

peek :: Ptr UVec2 -> IO UVec2 #

poke :: Ptr UVec2 -> UVec2 -> IO () #

Ix UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Num UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Show UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Methods

showsPrec :: Int -> UVec2 -> ShowS #

show :: UVec2 -> String #

showList :: [UVec2] -> ShowS #

NFData UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Methods

rnf :: UVec2 -> () #

Elementwise UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Eq UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Methods

(==) :: UVec2 -> UVec2 -> Bool #

(/=) :: UVec2 -> UVec2 -> Bool #

Ord UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Methods

compare :: UVec2 -> UVec2 -> Ordering #

(<) :: UVec2 -> UVec2 -> Bool #

(<=) :: UVec2 -> UVec2 -> Bool #

(>) :: UVec2 -> UVec2 -> Bool #

(>=) :: UVec2 -> UVec2 -> Bool #

max :: UVec2 -> UVec2 -> UVec2 #

min :: UVec2 -> UVec2 -> UVec2 #

Block UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Associated Types

type PackedSize UVec2 :: Nat #

Methods

alignment140 :: proxy UVec2 -> Int #

sizeOf140 :: proxy UVec2 -> Int #

isStruct :: proxy UVec2 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a UVec2 -> m UVec2 #

write140 :: MonadIO m => Ptr a -> Diff a UVec2 -> UVec2 -> m () #

alignment430 :: proxy UVec2 -> Int #

sizeOf430 :: proxy UVec2 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a UVec2 -> m UVec2 #

write430 :: MonadIO m => Ptr a -> Diff a UVec2 -> UVec2 -> m () #

sizeOfPacked :: proxy UVec2 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a UVec2 -> m UVec2 #

writePacked :: MonadIO m => Ptr a -> Diff a UVec2 -> UVec2 -> m () #

MonoFunctor UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Methods

omap :: (Element UVec2 -> Element UVec2) -> UVec2 -> UVec2 #

MonoPointed UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Methods

opoint :: Element UVec2 -> UVec2 #

type PackedSize UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

type PackedSize UVec2 = 8
type Element UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

withUVec2 :: UVec2 -> (Word32 -> Word32 -> r) -> r Source #

pattern WithUVec2 :: Word32 -> Word32 -> UVec2 Source #

data UVec3 Source #

Instances

Instances details
Storable UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Methods

sizeOf :: UVec3 -> Int #

alignment :: UVec3 -> Int #

peekElemOff :: Ptr UVec3 -> Int -> IO UVec3 #

pokeElemOff :: Ptr UVec3 -> Int -> UVec3 -> IO () #

peekByteOff :: Ptr b -> Int -> IO UVec3 #

pokeByteOff :: Ptr b -> Int -> UVec3 -> IO () #

peek :: Ptr UVec3 -> IO UVec3 #

poke :: Ptr UVec3 -> UVec3 -> IO () #

Ix UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Num UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Show UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Methods

showsPrec :: Int -> UVec3 -> ShowS #

show :: UVec3 -> String #

showList :: [UVec3] -> ShowS #

NFData UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Methods

rnf :: UVec3 -> () #

Elementwise UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Eq UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Methods

(==) :: UVec3 -> UVec3 -> Bool #

(/=) :: UVec3 -> UVec3 -> Bool #

Ord UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Methods

compare :: UVec3 -> UVec3 -> Ordering #

(<) :: UVec3 -> UVec3 -> Bool #

(<=) :: UVec3 -> UVec3 -> Bool #

(>) :: UVec3 -> UVec3 -> Bool #

(>=) :: UVec3 -> UVec3 -> Bool #

max :: UVec3 -> UVec3 -> UVec3 #

min :: UVec3 -> UVec3 -> UVec3 #

Block UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Associated Types

type PackedSize UVec3 :: Nat #

Methods

alignment140 :: proxy UVec3 -> Int #

sizeOf140 :: proxy UVec3 -> Int #

isStruct :: proxy UVec3 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a UVec3 -> m UVec3 #

write140 :: MonadIO m => Ptr a -> Diff a UVec3 -> UVec3 -> m () #

alignment430 :: proxy UVec3 -> Int #

sizeOf430 :: proxy UVec3 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a UVec3 -> m UVec3 #

write430 :: MonadIO m => Ptr a -> Diff a UVec3 -> UVec3 -> m () #

sizeOfPacked :: proxy UVec3 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a UVec3 -> m UVec3 #

writePacked :: MonadIO m => Ptr a -> Diff a UVec3 -> UVec3 -> m () #

MonoFunctor UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Methods

omap :: (Element UVec3 -> Element UVec3) -> UVec3 -> UVec3 #

MonoPointed UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Methods

opoint :: Element UVec3 -> UVec3 #

type PackedSize UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

type PackedSize UVec3 = 12
type Element UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

withUVec3 :: UVec3 -> (Word32 -> Word32 -> Word32 -> r) -> r Source #

pattern WithUVec3 :: Word32 -> Word32 -> Word32 -> UVec3 Source #

data UVec4 Source #

Instances

Instances details
Storable UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Methods

sizeOf :: UVec4 -> Int #

alignment :: UVec4 -> Int #

peekElemOff :: Ptr UVec4 -> Int -> IO UVec4 #

pokeElemOff :: Ptr UVec4 -> Int -> UVec4 -> IO () #

peekByteOff :: Ptr b -> Int -> IO UVec4 #

pokeByteOff :: Ptr b -> Int -> UVec4 -> IO () #

peek :: Ptr UVec4 -> IO UVec4 #

poke :: Ptr UVec4 -> UVec4 -> IO () #

Ix UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Num UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Show UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Methods

showsPrec :: Int -> UVec4 -> ShowS #

show :: UVec4 -> String #

showList :: [UVec4] -> ShowS #

NFData UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Methods

rnf :: UVec4 -> () #

Elementwise UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Eq UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Methods

(==) :: UVec4 -> UVec4 -> Bool #

(/=) :: UVec4 -> UVec4 -> Bool #

Ord UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Methods

compare :: UVec4 -> UVec4 -> Ordering #

(<) :: UVec4 -> UVec4 -> Bool #

(<=) :: UVec4 -> UVec4 -> Bool #

(>) :: UVec4 -> UVec4 -> Bool #

(>=) :: UVec4 -> UVec4 -> Bool #

max :: UVec4 -> UVec4 -> UVec4 #

min :: UVec4 -> UVec4 -> UVec4 #

Block UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Associated Types

type PackedSize UVec4 :: Nat #

Methods

alignment140 :: proxy UVec4 -> Int #

sizeOf140 :: proxy UVec4 -> Int #

isStruct :: proxy UVec4 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a UVec4 -> m UVec4 #

write140 :: MonadIO m => Ptr a -> Diff a UVec4 -> UVec4 -> m () #

alignment430 :: proxy UVec4 -> Int #

sizeOf430 :: proxy UVec4 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a UVec4 -> m UVec4 #

write430 :: MonadIO m => Ptr a -> Diff a UVec4 -> UVec4 -> m () #

sizeOfPacked :: proxy UVec4 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a UVec4 -> m UVec4 #

writePacked :: MonadIO m => Ptr a -> Diff a UVec4 -> UVec4 -> m () #

MonoFunctor UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Methods

omap :: (Element UVec4 -> Element UVec4) -> UVec4 -> UVec4 #

MonoPointed UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Methods

opoint :: Element UVec4 -> UVec4 #

type PackedSize UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

type PackedSize UVec4 = 16
type Element UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

withUVec4 :: UVec4 -> (Word32 -> Word32 -> Word32 -> Word32 -> r) -> r Source #

pattern WithUVec4 :: Word32 -> Word32 -> Word32 -> Word32 -> UVec4 Source #

Generic maps

class Elementwise a where Source #

Minimal complete definition

emap2, emap3, emap4, emap5

Methods

epoint :: Element a -> a Source #

default epoint :: MonoPointed a => Element a -> a Source #

emap :: (Element a -> Element a) -> a -> a Source #

default emap :: MonoFunctor a => (Element a -> Element a) -> a -> a Source #

emap2 :: (Element a -> Element a -> Element a) -> a -> a -> a Source #

emap3 :: (Element a -> Element a -> Element a -> Element a) -> a -> a -> a -> a Source #

emap4 :: (Element a -> Element a -> Element a -> Element a -> Element a) -> a -> a -> a -> a -> a Source #

emap5 :: (Element a -> Element a -> Element a -> Element a -> Element a -> Element a) -> a -> a -> a -> a -> a -> a Source #

Instances

Instances details
Elementwise IVec2 Source # 
Instance details

Defined in Geomancy.IVec2

Elementwise IVec3 Source # 
Instance details

Defined in Geomancy.IVec3

Elementwise IVec4 Source # 
Instance details

Defined in Geomancy.IVec4

Elementwise UVec2 Source # 
Instance details

Defined in Geomancy.UVec2

Elementwise UVec3 Source # 
Instance details

Defined in Geomancy.UVec3

Elementwise UVec4 Source # 
Instance details

Defined in Geomancy.UVec4

Elementwise Vec2 Source # 
Instance details

Defined in Geomancy.Vec2

Elementwise Packed Source # 
Instance details

Defined in Geomancy.Vec3

Elementwise Vec3 Source # 
Instance details

Defined in Geomancy.Vec3

Elementwise Vec4 Source # 
Instance details

Defined in Geomancy.Vec4

Elementwise v => Elementwise (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

epoint :: Element (Point v) -> Point v Source #

emap :: (Element (Point v) -> Element (Point v)) -> Point v -> Point v Source #

emap2 :: (Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v Source #

emap3 :: (Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v -> Point v Source #

emap4 :: (Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v -> Point v -> Point v Source #

emap5 :: (Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v -> Point v -> Point v -> Point v Source #

Matrices

data Mat4 Source #

Instances

Instances details
Storable Mat4 Source # 
Instance details

Defined in Geomancy.Mat4

Methods

sizeOf :: Mat4 -> Int #

alignment :: Mat4 -> Int #

peekElemOff :: Ptr Mat4 -> Int -> IO Mat4 #

pokeElemOff :: Ptr Mat4 -> Int -> Mat4 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Mat4 #

pokeByteOff :: Ptr b -> Int -> Mat4 -> IO () #

peek :: Ptr Mat4 -> IO Mat4 #

poke :: Ptr Mat4 -> Mat4 -> IO () #

Monoid Mat4 Source # 
Instance details

Defined in Geomancy.Mat4

Methods

mempty :: Mat4 #

mappend :: Mat4 -> Mat4 -> Mat4 #

mconcat :: [Mat4] -> Mat4 #

Semigroup Mat4 Source # 
Instance details

Defined in Geomancy.Mat4

Methods

(<>) :: Mat4 -> Mat4 -> Mat4 #

sconcat :: NonEmpty Mat4 -> Mat4 #

stimes :: Integral b => b -> Mat4 -> Mat4 #

Show Mat4 Source # 
Instance details

Defined in Geomancy.Mat4

Methods

showsPrec :: Int -> Mat4 -> ShowS #

show :: Mat4 -> String #

showList :: [Mat4] -> ShowS #

NFData Mat4 Source # 
Instance details

Defined in Geomancy.Mat4

Methods

rnf :: Mat4 -> () #

Block Mat4 Source # 
Instance details

Defined in Geomancy.Mat4

Associated Types

type PackedSize Mat4 :: Nat #

Methods

alignment140 :: proxy Mat4 -> Int #

sizeOf140 :: proxy Mat4 -> Int #

isStruct :: proxy Mat4 -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a Mat4 -> m Mat4 #

write140 :: MonadIO m => Ptr a -> Diff a Mat4 -> Mat4 -> m () #

alignment430 :: proxy Mat4 -> Int #

sizeOf430 :: proxy Mat4 -> Int #

read430 :: MonadIO m => Ptr a -> Diff a Mat4 -> m Mat4 #

write430 :: MonadIO m => Ptr a -> Diff a Mat4 -> Mat4 -> m () #

sizeOfPacked :: proxy Mat4 -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a Mat4 -> m Mat4 #

writePacked :: MonadIO m => Ptr a -> Diff a Mat4 -> Mat4 -> m () #

type PackedSize Mat4 Source # 
Instance details

Defined in Geomancy.Mat4

type PackedSize Mat4 = 64

newtype Transform Source #

Constructors

Transform 

Fields

Instances

Instances details
Storable Transform Source # 
Instance details

Defined in Geomancy.Transform

Monoid Transform Source # 
Instance details

Defined in Geomancy.Transform

Semigroup Transform Source # 
Instance details

Defined in Geomancy.Transform

Show Transform Source # 
Instance details

Defined in Geomancy.Transform

Block Transform Source # 
Instance details

Defined in Geomancy.Transform

Associated Types

type PackedSize Transform :: Nat #

Methods

alignment140 :: proxy Transform -> Int #

sizeOf140 :: proxy Transform -> Int #

isStruct :: proxy Transform -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a Transform -> m Transform #

write140 :: MonadIO m => Ptr a -> Diff a Transform -> Transform -> m () #

alignment430 :: proxy Transform -> Int #

sizeOf430 :: proxy Transform -> Int #

read430 :: MonadIO m => Ptr a -> Diff a Transform -> m Transform #

write430 :: MonadIO m => Ptr a -> Diff a Transform -> Transform -> m () #

sizeOfPacked :: proxy Transform -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a Transform -> m Transform #

writePacked :: MonadIO m => Ptr a -> Diff a Transform -> Transform -> m () #

type PackedSize Transform Source # 
Instance details

Defined in Geomancy.Transform

Other beasts

data Quaternion Source #

Instances

Instances details
Storable Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

Num Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

Show Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

NFData Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

Methods

rnf :: Quaternion -> () #

Eq Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

Ord Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

Block Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

Associated Types

type PackedSize Quaternion :: Nat #

type PackedSize Quaternion Source # 
Instance details

Defined in Geomancy.Quaternion

withQuaternion :: Quaternion -> (Float -> Float -> Float -> Float -> r) -> r Source #

Spaces

newtype Point v Source #

Constructors

Point v 

Instances

Instances details
Storable v => Storable (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

sizeOf :: Point v -> Int #

alignment :: Point v -> Int #

peekElemOff :: Ptr (Point v) -> Int -> IO (Point v) #

pokeElemOff :: Ptr (Point v) -> Int -> Point v -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Point v) #

pokeByteOff :: Ptr b -> Int -> Point v -> IO () #

peek :: Ptr (Point v) -> IO (Point v) #

poke :: Ptr (Point v) -> Point v -> IO () #

Generic (Point v) Source # 
Instance details

Defined in Geomancy.Point

Associated Types

type Rep (Point v) :: Type -> Type #

Methods

from :: Point v -> Rep (Point v) x #

to :: Rep (Point v) x -> Point v #

Ix v => Ix (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

range :: (Point v, Point v) -> [Point v] #

index :: (Point v, Point v) -> Point v -> Int #

unsafeIndex :: (Point v, Point v) -> Point v -> Int #

inRange :: (Point v, Point v) -> Point v -> Bool #

rangeSize :: (Point v, Point v) -> Int #

unsafeRangeSize :: (Point v, Point v) -> Int #

Num v => Num (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

(+) :: Point v -> Point v -> Point v #

(-) :: Point v -> Point v -> Point v #

(*) :: Point v -> Point v -> Point v #

negate :: Point v -> Point v #

abs :: Point v -> Point v #

signum :: Point v -> Point v #

fromInteger :: Integer -> Point v #

Fractional v => Fractional (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

(/) :: Point v -> Point v -> Point v #

recip :: Point v -> Point v #

fromRational :: Rational -> Point v #

Show v => Show (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

showsPrec :: Int -> Point v -> ShowS #

show :: Point v -> String #

showList :: [Point v] -> ShowS #

NFData v => NFData (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

rnf :: Point v -> () #

Elementwise v => Elementwise (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

epoint :: Element (Point v) -> Point v Source #

emap :: (Element (Point v) -> Element (Point v)) -> Point v -> Point v Source #

emap2 :: (Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v Source #

emap3 :: (Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v -> Point v Source #

emap4 :: (Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v -> Point v -> Point v Source #

emap5 :: (Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v) -> Element (Point v)) -> Point v -> Point v -> Point v -> Point v -> Point v -> Point v Source #

Eq v => Eq (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

(==) :: Point v -> Point v -> Bool #

(/=) :: Point v -> Point v -> Bool #

Ord v => Ord (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

compare :: Point v -> Point v -> Ordering #

(<) :: Point v -> Point v -> Bool #

(<=) :: Point v -> Point v -> Bool #

(>) :: Point v -> Point v -> Bool #

(>=) :: Point v -> Point v -> Bool #

max :: Point v -> Point v -> Point v #

min :: Point v -> Point v -> Point v #

(KnownNat (PackedSize v), Block v) => Block (Point v) Source # 
Instance details

Defined in Geomancy.Point

Associated Types

type PackedSize (Point v) :: Nat #

Methods

alignment140 :: proxy (Point v) -> Int #

sizeOf140 :: proxy (Point v) -> Int #

isStruct :: proxy (Point v) -> Bool #

read140 :: MonadIO m => Ptr a -> Diff a (Point v) -> m (Point v) #

write140 :: MonadIO m => Ptr a -> Diff a (Point v) -> Point v -> m () #

alignment430 :: proxy (Point v) -> Int #

sizeOf430 :: proxy (Point v) -> Int #

read430 :: MonadIO m => Ptr a -> Diff a (Point v) -> m (Point v) #

write430 :: MonadIO m => Ptr a -> Diff a (Point v) -> Point v -> m () #

sizeOfPacked :: proxy (Point v) -> Int #

readPacked :: MonadIO m => Ptr a -> Diff a (Point v) -> m (Point v) #

writePacked :: MonadIO m => Ptr a -> Diff a (Point v) -> Point v -> m () #

MonoFunctor v => MonoFunctor (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

omap :: (Element (Point v) -> Element (Point v)) -> Point v -> Point v #

MonoPointed v => MonoPointed (Point v) Source # 
Instance details

Defined in Geomancy.Point

Methods

opoint :: Element (Point v) -> Point v #

VectorSpace v Float => AffineSpace (Point v) v Float Source # 
Instance details

Defined in Geomancy.Point

Methods

origin :: Point v #

(.+^) :: Point v -> v -> Point v #

(.-^) :: Point v -> v -> Point v #

(.-.) :: Point v -> Point v -> v #

distance :: Point v -> Point v -> Float #

type Rep (Point v) Source # 
Instance details

Defined in Geomancy.Point

type Rep (Point v) = D1 ('MetaData "Point" "Geomancy.Point" "geomancy-0.2.6.0-Cv22q6pBHLzJuYzXF6h8mc" 'True) (C1 ('MetaCons "Point" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v)))
type PackedSize (Point v) Source # 
Instance details

Defined in Geomancy.Point

type Element (Point v) Source # 
Instance details

Defined in Geomancy.Point

type Element (Point v) = Element v

class (Floating a, VectorSpace v a) => AffineSpace p v a | p -> v, v -> a where #

Affine Space type relation.

An affine space is a set (type) p, and an associated vector space v over a field a.

Minimal complete definition

origin, (.+^), (.-.)

Methods

(.+^) :: p -> v -> p infix 6 #

Addition of affine point and vector.

(.-^) :: p -> v -> p infix 6 #

Subtraction of affine point and vector.

(.-.) :: p -> p -> v infix 6 #

Subtraction of two points in the affine space, giving a vector.

Instances

Instances details
VectorSpace v Float => AffineSpace (Point v) v Float Source # 
Instance details

Defined in Geomancy.Point

Methods

origin :: Point v #

(.+^) :: Point v -> v -> Point v #

(.-^) :: Point v -> v -> Point v #

(.-.) :: Point v -> Point v -> v #

distance :: Point v -> Point v -> Float #

class VectorSpace v a | v -> a where #

Vector space type relation.

A vector space is a set (type) closed under addition and multiplication by a scalar. The type of the scalar is the field of the vector space, and it is said that v is a vector space over a.

The encoding uses a type class |VectorSpace| v a, where v represents the type of the vectors and a represents the types of the scalars.

Minimal complete definition

zeroVector, (*^), (^+^), dot

Methods

zeroVector :: v #

Vector with no magnitude (unit for addition).

(*^) :: a -> v -> v infixr 9 #

Multiplication by a scalar.

(^/) :: v -> a -> v infixl 9 #

Division by a scalar.

(^+^) :: v -> v -> v infixl 6 #

Vector addition

(^-^) :: v -> v -> v infixl 6 #

Vector subtraction

negateVector :: v -> v #

Vector negation. Addition with a negated vector should be same as subtraction.

dot :: v -> v -> a infix 7 #

Dot product (also known as scalar or inner product).

For two vectors, mathematically represented as a = a1,a2,...,an and b = b1,b2,...,bn, the dot product is a . b = a1*b1 + a2*b2 + ... + an*bn.

Some properties are derived from this. The dot product of a vector with itself is the square of its magnitude (norm), and the dot product of two orthogonal vectors is zero.

norm :: v -> a #

Vector's norm (also known as magnitude).

For a vector represented mathematically as a = a1,a2,...,an, the norm is the square root of a1^2 + a2^2 + ... + an^2.

normalize :: v -> v #

Return a vector with the same origin and orientation (angle), but such that the norm is one (the unit for multiplication by a scalar).

Instances

Instances details
VectorSpace Vec2 Float Source # 
Instance details

Defined in Geomancy.Vec2

VectorSpace Packed Float Source # 
Instance details

Defined in Geomancy.Vec3

VectorSpace Vec3 Float Source # 
Instance details

Defined in Geomancy.Vec3

VectorSpace Vec4 Float Source # 
Instance details

Defined in Geomancy.Vec4

VectorSpace Double Double

Vector space instance for Doubles, with Double scalars.

Instance details

Defined in Data.VectorSpace

VectorSpace Float Float

Vector space instance for Floats, with Float scalars.

Instance details

Defined in Data.VectorSpace

(Eq a, Floating a) => VectorSpace (a, a) a

Vector space instance for pairs of Floating point numbers.

Instance details

Defined in Data.VectorSpace

Methods

zeroVector :: (a, a) #

(*^) :: a -> (a, a) -> (a, a) #

(^/) :: (a, a) -> a -> (a, a) #

(^+^) :: (a, a) -> (a, a) -> (a, a) #

(^-^) :: (a, a) -> (a, a) -> (a, a) #

negateVector :: (a, a) -> (a, a) #

dot :: (a, a) -> (a, a) -> a #

norm :: (a, a) -> a #

normalize :: (a, a) -> (a, a) #

(Eq a, Floating a) => VectorSpace (a, a, a) a

Vector space instance for triplets of Floating point numbers.

Instance details

Defined in Data.VectorSpace

Methods

zeroVector :: (a, a, a) #

(*^) :: a -> (a, a, a) -> (a, a, a) #

(^/) :: (a, a, a) -> a -> (a, a, a) #

(^+^) :: (a, a, a) -> (a, a, a) -> (a, a, a) #

(^-^) :: (a, a, a) -> (a, a, a) -> (a, a, a) #

negateVector :: (a, a, a) -> (a, a, a) #

dot :: (a, a, a) -> (a, a, a) -> a #

norm :: (a, a, a) -> a #

normalize :: (a, a, a) -> (a, a, a) #

(Eq a, Floating a) => VectorSpace (a, a, a, a) a

Vector space instance for tuples with four Floating point numbers.

Instance details

Defined in Data.VectorSpace

Methods

zeroVector :: (a, a, a, a) #

(*^) :: a -> (a, a, a, a) -> (a, a, a, a) #

(^/) :: (a, a, a, a) -> a -> (a, a, a, a) #

(^+^) :: (a, a, a, a) -> (a, a, a, a) -> (a, a, a, a) #

(^-^) :: (a, a, a, a) -> (a, a, a, a) -> (a, a, a, a) #

negateVector :: (a, a, a, a) -> (a, a, a, a) #

dot :: (a, a, a, a) -> (a, a, a, a) -> a #

norm :: (a, a, a, a) -> a #

normalize :: (a, a, a, a) -> (a, a, a, a) #

(Eq a, Floating a) => VectorSpace (a, a, a, a, a) a

Vector space instance for tuples with five Floating point numbers.

Instance details

Defined in Data.VectorSpace

Methods

zeroVector :: (a, a, a, a, a) #

(*^) :: a -> (a, a, a, a, a) -> (a, a, a, a, a) #

(^/) :: (a, a, a, a, a) -> a -> (a, a, a, a, a) #

(^+^) :: (a, a, a, a, a) -> (a, a, a, a, a) -> (a, a, a, a, a) #

(^-^) :: (a, a, a, a, a) -> (a, a, a, a, a) -> (a, a, a, a, a) #

negateVector :: (a, a, a, a, a) -> (a, a, a, a, a) #

dot :: (a, a, a, a, a) -> (a, a, a, a, a) -> a #

norm :: (a, a, a, a, a) -> a #

normalize :: (a, a, a, a, a) -> (a, a, a, a, a) #

(^*) :: VectorSpace v a => v -> a -> v Source #

lerp :: (VectorSpace v a, Num a) => v -> v -> a -> v Source #

quadrance :: VectorSpace v a => v -> a Source #