vect-0.4.6: A low-dimensional linear algebra library, tailored to computer graphics.



Rotation around an arbitrary plane in four dimensions, and other miscellanea. Not very useful for most people, and not re-exported by Data.Vect.



biVector4 :: Vec4 -> Vec4 -> (Float, Float, Float, Float, Float, Float)Source

If (x,y,u,v) is an orthonormal system, then (written in pseudo-code) biVector4 (x,y) = plusMinus (reverse $ biVector4 (u,v)). This is a helper function for the 4 dimensional rotation code. If (x,y,z,p,q,r) = biVector4 a b, then the corresponding antisymmetric tensor is

 [  0  r  q  p ]
 [ -r  0  z -y ]
 [ -q -z  0  x ]
 [ -p  y -x  0 ]

biVector4AsTensor :: Vec4 -> Vec4 -> Mat4Source

the corresponding antisymmetric tensor

rotate4' :: Float -> (Normal4, Normal4) -> Vec4 -> Vec4Source

We assume that the axes are normalized and orthogonal to each other!

rotate4 :: Float -> (Vec4, Vec4) -> Vec4 -> Vec4Source

We assume only that the axes are independent vectors.

rotMatrix4' :: Float -> (Normal4, Normal4) -> Mat4Source

Rotation matrix around a plane specified by two normalized and orthogonal vectors. Intended for multiplication on the right!

rotMatrix4 :: Float -> (Vec4, Vec4) -> Mat4Source

We assume only that the axes are independent vectors.