vect-floating-0.1.0.4: A low-dimensional linear algebra library, operating on the Floating typeclass

Data.Vect.Floating.Util.Projective

Description

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.

Synopsis

# Documentation

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`.

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`.

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

Synonym for "translateAfter4"

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

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

translateBefore4 :: (Floating a, Extend a Mat3 Mat4, RightModule (Vec3 a) (Mat3 a)) => Vec3 a -> Proj4 a -> Proj4 a Source

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