Safe Haskell | None |
---|---|

Language | Haskell98 |

Classic 4x4 projective matrices, encoding the affine transformations of R^3.
Our convention is that they are intended for multiplication on
the *right*, that is, they are of the form

_____ [ | | 0 ] [ | 3x3 | 0 ] [ |_____| 0 ] [ p q r 1 ]

Please note that by default, OpenGL stores the matrices (in memory) by columns, while we
store them by rows; but OpenGL also use the opposite convention (so the OpenGL projective matrices
are intended for multiplication on the *left*). So in effect, they are the same when stored in the memory,
say with `poke :: Ptr Mat4 -> Mat4 -> IO ()`

.

Warning: The naming conventions will probably change in the future.

- rotMatrixProj4' :: (Floating a, Projective a Vec3 Mat3 Ortho3 b Proj4) => a -> Normal3 a -> Proj4 a
- rotMatrixProj4 :: Floating a => a -> Vec3 a -> Proj4 a
- rotateProj4 :: Floating a => a -> Normal3 a -> Proj4 a -> Proj4 a
- rotateAfterProj4 :: Floating a => a -> Normal3 a -> Proj4 a -> Proj4 a
- rotateBeforeProj4 :: Floating a => a -> Normal3 a -> Proj4 a -> Proj4 a
- scalingUniformProj4 :: Floating a => a -> Proj4 a
- scaleBeforeProj4 :: Floating a => Vec3 a -> Proj4 a -> Proj4 a
- scaleAfterProj4 :: Floating a => Vec3 a -> Proj4 a -> Proj4 a
- translate4 :: Floating a => Vec3 a -> Proj4 a -> Proj4 a
- translateAfter4 :: Floating a => Vec3 a -> Proj4 a -> Proj4 a
- translateBefore4 :: (Floating a, Extend a Mat3 Mat4, RightModule (Vec3 a) (Mat3 a)) => Vec3 a -> Proj4 a -> Proj4 a

# Documentation

rotMatrixProj4' :: (Floating a, Projective a Vec3 Mat3 Ortho3 b Proj4) => a -> Normal3 a -> Proj4 a Source

rotMatrixProj4 :: Floating a => a -> Vec3 a -> Proj4 a Source

rotateProj4 :: Floating a => a -> Normal3 a -> Proj4 a -> Proj4 a Source

synonym for "rotateAfterProj4"

rotateAfterProj4 :: Floating a => a -> Normal3 a -> Proj4 a -> Proj4 a Source

Synonym for `m -> m .*. rotMatrixProj4 angle axis`

.

rotateBeforeProj4 :: Floating a => a -> Normal3 a -> Proj4 a -> Proj4 a Source

Synonym for `m -> rotMatrixProj4 angle axis .*. m`

.

scalingUniformProj4 :: Floating a => a -> Proj4 a Source

scaleBeforeProj4 :: Floating a => Vec3 a -> Proj4 a -> Proj4 a Source

Equivalent to `m -> scaling v .*. m`

.

scaleAfterProj4 :: Floating a => Vec3 a -> Proj4 a -> Proj4 a Source

Equivalent to `m -> m .*. scaling v`

.