jjant/linear-algebra/1.0.0

Mat4

type alias Mat4 =
{ m11 : Float
, m12 : Float
, m13 : Float
, m14 : Float
, m21 : Float
, m22 : Float
, m23 : Float
, m24 : Float
, m31 : Float
, m32 : Float
, m33 : Float
, m34 : Float
, m41 : Float
, m42 : Float
, m43 : Float
, m44 : 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 : Float -> Vec3 -> Mat4

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

scale : Vec3 -> Mat4
translate : Vec3 -> Mat4

Projections

{ eye : Vec3
, centerOfAttention : Vec3
, up : Vec3
}
-> Maybe Mat4
{ left : Float
, right : Float
, bottom : Float
, top : Float
, zNear : Float
, zFar : Float
}
-> Mat4
{ fovy : Float
, aspect : Float
, zNear : Float
, zFar : 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.