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

Geomancy.Mat4

Description

General matrix storage and operations.

Synopsis

Documentation

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

rowMajor :: Coercible Mat4 a => Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> a Source #

Construct Mat4 from row notation.

withRowMajor :: Coercible a Mat4 => a -> (Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> r) -> r Source #

Reduce Mat4 with a function with row notation of arguments.

fromRowMajor2d :: forall t a. (Foldable t, Coercible Mat4 a) => t (t Float) -> Maybe a Source #

Build a Mat4 from a list-of-lists kind of container with row-major ordering of elements.

  fromRowMajor2d (Linear.mkTransformation dir pos) :: Transform

colMajor :: Coercible Mat4 a => Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> a Source #

Construct a Mat4 from column notation.

withColMajor :: Coercible a Mat4 => a -> (Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> r) -> r Source #

Reduce Mat4 with a function with column notation for arguments.

identity :: Mat4 Source #

I, the identity matrix.

Neutral element of its monoid, so you can use mempty.

inverse :: (Coercible Mat4 a, Coercible Mat4 a) => a -> a Source #

Compute an inverse matrix, slowly.

zipWith :: (Float -> Float -> c) -> Mat4 -> Mat4 -> [c] Source #

(!*) :: Coercible a Mat4 => a -> Vec4 -> Vec4 Source #

Matrix - column vector multiplication