Vec-Transform-1.0.6: Extends the Vec package with some 4x4 transform matrices

Data.Vec.LinAlg.Transform3D

Description

Some 4x4 transformation matrices, using a right handed coordinate system. These matrices are used by multiplying vectors from the right.

The projection matrices will produce vectors in a left handed coordinate system, i.e. where z goes into the screen.

Synopsis

# Documentation

translation :: (Eq a, Show a, Num a) => Vec3 a -> Mat44 aSource

A 4x4 translation matrix

Arguments

 :: Floating a => a The angle in radians -> Mat44 a

A 4x4 rotation matrix for a rotation around the X axis

Arguments

 :: Floating a => a The angle in radians -> Mat44 a

A 4x4 rotation matrix for a rotation around the Y axis

Arguments

 :: Floating a => a The angle in radians -> Mat44 a

A 4x4 rotation matrix for a rotation around the Z axis

Arguments

 :: Floating a => Vec3 a The normalized vector around which the rotation goes -> a The angle in radians -> Mat44 a

A 4x4 rotation matrix for a rotation around an arbitrary normalized vector

rotationEuler :: (Eq a, Show a, Floating a) => Vec3 a -> Mat44 aSource

A 4x4 rotation matrix from the euler angles yaw pitch and roll. Could be useful in e.g. first person shooter games,

Arguments

 :: Num a => Vec4 a The quaternion with the real part (w) last -> Mat44 a

A 4x4 rotation matrix from a normalized quaternion. Useful for most free flying rotations, such as airplanes.

Arguments

 :: (Eq a, Show a, Floating a) => Vec3 a The up direction, not necessary unit length or perpendicular to the view vector -> Vec3 a The viewers position -> Vec3 a The point to look at -> Mat44 a

A 4x4 rotation matrix for turning toward a point. Useful for targeting a camera to a specific point.

scaling :: (Eq a, Show a, Num a) => Vec3 a -> Mat44 aSource

A 4x4 scaling matrix

Arguments

 :: Floating a => a Near plane clipping distance (always positive) -> a Far plane clipping distance (always positive) -> a Field of view of the y axis, in radians -> a Aspect ratio, i.e. screen's width/height -> Mat44 a

A perspective projection matrix for a right handed coordinate system looking down negative z. This will project far plane to `z = +1` and near plane to `z = -1`, i.e. into a left handed system.

Arguments

 :: Fractional a => a Near plane clipping distance -> a Far plane clipping distance -> Vec2 a The size of the view (center aligned around origo) -> Mat44 a

An orthogonal projection matrix for a right handed coordinate system looking down negative z. This will project far plane to `z = +1` and near plane to `z = -1`, i.e. into a left handed system.