jjant / linear-algebra / Mat4


type alias Mat4 =
{ m11 : Basics.Float
, m12 : Basics.Float
, m13 : Basics.Float
, m14 : Basics.Float
, m21 : Basics.Float
, m22 : Basics.Float
, m23 : Basics.Float
, m24 : Basics.Float
, m31 : Basics.Float
, m32 : Basics.Float
, m33 : Basics.Float
, m34 : Basics.Float
, m41 : Basics.Float
, m42 : Basics.Float
, m43 : Basics.Float
, m44 : Basics.Float 
}

Create

identity : Mat4

fromRows : Vec4 -> Vec4 -> Vec4 -> Vec4 -> Mat4

Create a matrix out of vectors representing its rows.

Operations

add : Mat4 -> Mat4 -> Mat4

mul : Mat4 -> Mat4 -> Mat4

invert : Mat4 -> Maybe Mat4

transpose : Mat4 -> Mat4

3D Transformations

rotate : Basics.Float -> Vec3 -> Mat4

Creates a transformation matrix for rotation in radians about the 3-element vector axis.

scale : Vec3 -> Mat4

translate : Vec3 -> Mat4

Projections

lookAt : { eye : Vec3, centerOfAttention : Vec3, up : Vec3 } -> Maybe Mat4

orthographic : { left : Basics.Float, right : Basics.Float, bottom : Basics.Float, top : Basics.Float, zNear : Basics.Float, zFar : Basics.Float } -> Mat4

perspective : { fovy : Basics.Float, aspect : Basics.Float, zNear : Basics.Float, zFar : Basics.Float } -> Mat4

Apply matrices

transformPoint : Mat4 -> Vec3 -> Vec3

Transforms a point, applying scaling, rotation, and translation.

transformVector : Mat4 -> Vec3 -> Vec3

Transforms a vector, applying scaling and rotation, but not translation.

transform : Mat4 -> Vec4 -> Vec4

Transforms a general 4D vector.