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

Safe HaskellSafe-Infered

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

rotationXSource

Arguments

:: Floating a 
=> a

The angle in radians

-> Mat44 a 

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

rotationYSource

Arguments

:: Floating a 
=> a

The angle in radians

-> Mat44 a 

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

rotationZSource

Arguments

:: Floating a 
=> a

The angle in radians

-> Mat44 a 

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

rotationVecSource

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,

rotationQuatSource

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.

rotationLookAtSource

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

perspectiveSource

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.

orthogonalSource

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.