math/numerics
sourcemath/numerics.sx
pub type Mat4x4 = { m00: f64, m10: f64, m20: f64, m30: f64, m01: f64, m11: f64, m21: f64, m31: f64, m02: f64, m12: f64, m22: f64, m32: f64, m03: f64, m13: f64, m23: f64, m33: f64 }
4x4 matrix stored in column-major order
Fields
| Name | Type |
|---|
m00 | f64 |
m10 | f64 |
m20 | f64 |
m30 | f64 |
m01 | f64 |
m11 | f64 |
m21 | f64 |
m31 | f64 |
m02 | f64 |
m12 | f64 |
m22 | f64 |
m32 | f64 |
m03 | f64 |
m13 | f64 |
m23 | f64 |
m33 | f64 |
pub type Vec3 = { x: f64, y: f64, z: f64 }
Fields
pub type EulerAngles = { roll: f64, pitch: f64, yaw: f64 }
Euler angles in radians: roll (X), pitch (Y), yaw (Z).
Fields
| Name | Type |
|---|
roll | f64 |
pitch | f64 |
yaw | f64 |
pub type Quaternion = { x: f64, y: f64, z: f64, w: f64 }
Quaternion stored as vector part (x, y, z) and scalar part (w).
Fields
fn wrap_signed_radians(angle: f64) f64
pub fn (Mat4x4) identity() Mat4x4
pub fn (Mat4x4) zero() Mat4x4
pub fn (Mat4x4) mul(a: Mat4x4, b: Mat4x4) Mat4x4
pub fn (Mat4x4) scale_scalar(m: Mat4x4, s: f64) Mat4x4
pub fn (Mat4x4) add(a: Mat4x4, b: Mat4x4) Mat4x4
pub fn (Mat4x4) transpose(m: Mat4x4) Mat4x4
pub fn (Mat4x4) translate(x: f64, y: f64, z: f64) Mat4x4
Create translation matrix
pub fn (Mat4x4) scale(x: f64, y: f64, z: f64) Mat4x4
pub fn (Mat4x4) rotate_x(angle: f64) Mat4x4
Create rotation matrix around X axis
pub fn (Mat4x4) rotate_y(angle: f64) Mat4x4
Create rotation matrix around Y axis
pub fn (Mat4x4) rotate_z(angle: f64) Mat4x4
Create rotation matrix around Z axis
pub fn (Mat4x4) perspective(fov: f64, aspect: f64, near: f64, far: f64) Mat4x4
Create perspective projection matrix
pub fn (Mat4x4) ortho(left: f64, right: f64, bottom: f64, top: f64, near: f64, far: f64) Mat4x4
Create orthographic projection matrix
pub fn (Mat4x4) look_at(eye: Vec3, center: Vec3, up: Vec3) Mat4x4
Create look-at view matrix
pub fn (Mat4x4) det(m: Mat4x4) f64
Calculate determinant of 4x4 matrix
pub fn (Vec3) new(x: f64, y: f64, z: f64) Vec3
pub fn (EulerAngles) new(roll: f64, pitch: f64, yaw: f64) EulerAngles
Create a new set of Euler angles in radians.
pub fn (EulerAngles) normalize(e: EulerAngles) EulerAngles
Wrap Euler angles into a signed [-PI, PI] range.
pub fn (Quaternion) new(x: f64, y: f64, z: f64, w: f64) Quaternion
Create a quaternion from its four components.
pub fn (Quaternion) identity() Quaternion
Identity rotation quaternion.
pub fn (Quaternion) dot(a: Quaternion, b: Quaternion) f64
Dot product between two quaternions.
pub fn (Quaternion) length_squared(q: Quaternion) f64
Squared quaternion length.
pub fn (Quaternion) length(q: Quaternion) f64
pub fn (Quaternion) scale(q: Quaternion, s: f64) Quaternion
Scale a quaternion by a scalar.
pub fn (Quaternion) add(a: Quaternion, b: Quaternion) Quaternion
Add two quaternions component-wise.
pub fn (Quaternion) normalize(q: Quaternion) Quaternion
Return a normalized quaternion.
pub fn (Quaternion) conjugate(q: Quaternion) Quaternion
Conjugate of a quaternion.
pub fn (Quaternion) inverse(q: Quaternion) Quaternion
pub fn (Quaternion) mul(a: Quaternion, b: Quaternion) Quaternion
Hamilton product of two quaternions.
pub fn (Quaternion) from_axis_angle(axis: Vec3, angle: f64) Quaternion
Construct a quaternion from a normalized axis and angle in radians.
pub fn (Quaternion) from_euler(roll: f64, pitch: f64, yaw: f64) Quaternion
Construct a quaternion from roll (X), pitch (Y), yaw (Z) Euler angles in radians.
pub fn (Quaternion) from_euler_angles(e: EulerAngles) Quaternion
Construct a quaternion from Euler angles.
pub fn (Quaternion) to_euler(q: Quaternion) EulerAngles
Convert a quaternion to roll/pitch/yaw Euler angles in radians.
pub fn (Quaternion) rotate_vec3(q: Quaternion, v: Vec3) Vec3
Rotate a vector by a quaternion.
pub fn (Quaternion) to_mat4(q: Quaternion) Mat4x4
Convert a quaternion into a 4x4 rotation matrix.
pub fn (Quaternion) nlerp(a: Quaternion, b: Quaternion, t: f64) Quaternion
Normalized linear interpolation between two quaternions using the shortest path.
pub fn (Quaternion) slerp(a: Quaternion, b: Quaternion, t: f64) Quaternion
Spherical linear interpolation between two quaternions using the shortest path.
pub fn (Vec3) dot(a: Vec3, b: Vec3) f64
pub fn (Vec3) cross(a: Vec3, b: Vec3) Vec3
pub fn (Vec3) length(v: Vec3) f64
pub fn (Vec3) normalize(v: Vec3) Vec3
pub fn (Vec3) add(a: Vec3, b: Vec3) Vec3
pub fn (Vec3) sub(a: Vec3, b: Vec3) Vec3
pub fn (Vec3) scale(v: Vec3, s: f64) Vec3
Vector scalar multiplication
pub fn (Vec3) distance_squared(a: Vec3, b: Vec3) f64
Squared distance between two vectors.
pub fn (Vec3) distance(a: Vec3, b: Vec3) f64
Distance between two vectors.
pub fn (Vec3) lerp(a: Vec3, b: Vec3, t: f64) Vec3
Linear interpolation between two vectors.