Rotation around an arbitrary plane in four dimensions, and other miscellanea. Not very useful for most people, and not re-exported by Data.Vect.
- structVec4 :: [Double] -> [Vec4]
- destructVec4 :: [Vec4] -> [Double]
- translate4X :: Double -> Vec4 -> Vec4
- translate4Y :: Double -> Vec4 -> Vec4
- translate4Z :: Double -> Vec4 -> Vec4
- translate4W :: Double -> Vec4 -> Vec4
- vec4X :: Vec4
- vec4Y :: Vec4
- vec4Z :: Vec4
- vec4W :: Vec4
- biVector4 :: Vec4 -> Vec4 -> (Double, Double, Double, Double, Double, Double)
- biVector4AsTensor :: Vec4 -> Vec4 -> Mat4
- rotate4' :: Double -> (Normal4, Normal4) -> Vec4 -> Vec4
- rotate4 :: Double -> (Vec4, Vec4) -> Vec4 -> Vec4
- rotMatrix4' :: Double -> (Normal4, Normal4) -> Mat4
- rotMatrix4 :: Double -> (Vec4, Vec4) -> Mat4
Documentation
structVec4 :: [Double] -> [Vec4]Source
destructVec4 :: [Vec4] -> [Double]Source
translate4X :: Double -> Vec4 -> Vec4Source
translate4Y :: Double -> Vec4 -> Vec4Source
translate4Z :: Double -> Vec4 -> Vec4Source
translate4W :: Double -> Vec4 -> Vec4Source
biVector4 :: Vec4 -> Vec4 -> (Double, Double, Double, Double, Double, Double)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' :: Double -> (Normal4, Normal4) -> Vec4 -> Vec4Source
We assume that the axes are normalized and orthogonal to each other!
rotate4 :: Double -> (Vec4, Vec4) -> Vec4 -> Vec4Source
We assume only that the axes are independent vectors.