Safe Haskell | Safe-Infered |
---|
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.
- translation :: (Eq a, Show a, Num a) => Vec3 a -> Mat44 a
- rotationX :: Floating a => a -> Mat44 a
- rotationY :: Floating a => a -> Mat44 a
- rotationZ :: Floating a => a -> Mat44 a
- rotationVec :: Floating a => Vec3 a -> a -> Mat44 a
- rotationEuler :: (Eq a, Show a, Floating a) => Vec3 a -> Mat44 a
- rotationQuat :: Num a => Vec4 a -> Mat44 a
- rotationLookAt :: (Eq a, Show a, Floating a) => Vec3 a -> Vec3 a -> Vec3 a -> Mat44 a
- scaling :: (Eq a, Show a, Num a) => Vec3 a -> Mat44 a
- perspective :: Floating a => a -> a -> a -> a -> Mat44 a
- orthogonal :: Fractional a => a -> a -> Vec2 a -> Mat44 a
Documentation
A 4x4 rotation matrix for a rotation around the X axis
A 4x4 rotation matrix for a rotation around the Y axis
A 4x4 rotation matrix for a rotation around the Z axis
:: 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,
A 4x4 rotation matrix from a normalized quaternion. Useful for most free flying rotations, such as airplanes.
:: (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.
:: 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.
:: 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.