| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Geomancy.Mat4
Description
General matrix storage and operations.
Synopsis
- data Mat4
- identity :: Mat4
- transpose :: Mat4 -> Mat4
- inverse :: (Coercible Mat4 a, Coercible Mat4 a) => a -> a
- det :: (Coercible Mat4 a, Coercible Mat4 a) => a -> Float
- pointwise :: Mat4 -> Mat4 -> (Float -> Float -> Float) -> Mat4
- zipWith :: (Float -> Float -> c) -> Mat4 -> Mat4 -> [c]
- matrixProduct :: Mat4 -> Mat4 -> Mat4
- scalarMultiply :: Float -> Mat4 -> Mat4
- (!*) :: Coercible a Mat4 => a -> Vec4 -> Vec4
- colMajor :: Coercible Mat4 a => Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> a
- withColMajor :: Coercible a Mat4 => a -> (Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> r) -> r
- toListColMajor :: Coercible a Mat4 => a -> [Float]
- toListColMajor2d :: Coercible a Mat4 => a -> [[Float]]
- showColumns :: Mat4 -> String
- rowMajor :: Coercible Mat4 a => Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> a
- withRowMajor :: Coercible a Mat4 => a -> (Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> r) -> r
- toListRowMajor :: Coercible a Mat4 => a -> [Float]
- toListRowMajor2d :: Coercible a Mat4 => a -> [[Float]]
- fromRowMajor2d :: (Foldable t, Coercible Mat4 a) => t (t Float) -> Maybe a
- showRows :: Mat4 -> String
Documentation
Instances
| Storable Mat4 Source # | |||||
Defined in Geomancy.Mat4.Internal | |||||
| Monoid Mat4 Source # | |||||
| Semigroup Mat4 Source # | |||||
| Show Mat4 Source # | |||||
| NFData Mat4 Source # | |||||
Defined in Geomancy.Mat4.Internal | |||||
| Block Mat4 Source # | |||||
Defined in Geomancy.Mat4.Internal Associated Types
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 # | |||||
Defined in Geomancy.Mat4.Internal | |||||
Operations
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.
(!*) :: Coercible a Mat4 => a -> Vec4 -> Vec4 infixr 5 Source #
Matrix - column vector multiplication (post)
vOut = p <> v <> m !* vIn
Construction
Col-major
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.
showColumns :: Mat4 -> String Source #
Row-major
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 for arguments.
fromRowMajor2d :: (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