raymath library

Functions

Clamp(double value, double min, double max) → double
FloatEquals(double x, double y, [double epsilon = 1e-6]) → bool
Lerp(double start, double end, double amount) → double
MatrixAdd(Matrix4 left, Matrix4 right) → Matrix4
MatrixDeterminant(Matrix4 mat) → double
MatrixFrustum(double left, double right, double bottom, double top, double near, double far) → Matrix4
MatrixIdentity() → Matrix4
MatrixInvert(Matrix4 mat) → Matrix4
MatrixLookAt(Vector3 eye, Vector3 target, Vector3 up) → Matrix4
MatrixMultiply(Matrix4 left, Matrix4 right) → Matrix4
MatrixOrtho(double left, double right, double bottom, double top, double near, double far) → Matrix4
MatrixPerspective(double fovy, double aspect, double near, double far) → Matrix4
MatrixRotate(Vector3 axis, double angle) → Matrix4
Rotation matrix from axis and angle (radians) — Rodrigues' formula.
MatrixRotateX(double angle) → Matrix4
MatrixRotateXYZ(Vector3 angle) → Matrix4
MatrixRotateY(double angle) → Matrix4
MatrixRotateZ(double angle) → Matrix4
MatrixRotateZYX(Vector3 angle) → Matrix4
MatrixScale(double x, double y, double z) → Matrix4
MatrixSubtract(Matrix4 left, Matrix4 right) → Matrix4
MatrixTrace(Matrix4 mat) → double
MatrixTranslate(double x, double y, double z) → Matrix4
MatrixTranspose(Matrix4 mat) → Matrix4
Normalize(double value, double start, double end) → double
QuaternionAdd(Quaternion q1, Quaternion q2) → Quaternion
Component-wise addition.
QuaternionAddValue(Quaternion q, double add) → Quaternion
QuaternionDivide(Quaternion q1, Quaternion q2) → Quaternion
Component-wise divide (raylib convention).
QuaternionEquals(Quaternion p, Quaternion q, [double epsilon = 1e-6]) → bool
QuaternionFromAxisAngle(Vector3 axis, double angle) → Quaternion
QuaternionFromEuler(double pitch, double yaw, double roll) → Quaternion
From Euler angles pitch (X), yaw (Y), roll (Z) in radians — ZYX order.
QuaternionFromMatrix(Matrix4 mat) → Quaternion
Quaternion from rotation matrix (upper-left 3×3 of mat).
QuaternionFromVector3ToVector3(Vector3 from, Vector3 to) → Quaternion
Rotation quaternion from one vector direction to another.
QuaternionIdentity() → Quaternion
QuaternionInvert(Quaternion q) → Quaternion
True inverse: conjugate / length² (for non-unit quaternions).
QuaternionLength(Quaternion q) → double
QuaternionLerp(Quaternion q1, Quaternion q2, double amount) → Quaternion
Linear interpolation (not normalized).
QuaternionMultiply(Quaternion q1, Quaternion q2) → Quaternion
QuaternionNlerp(Quaternion q1, Quaternion q2, double amount) → Quaternion
Normalized linear interpolation.
QuaternionNormalize(Quaternion q) → Quaternion
QuaternionScale(Quaternion q, double mul) → Quaternion
Component-wise scale (not Hamilton product).
QuaternionSlerp(Quaternion q1, Quaternion q2, double amount) → Quaternion
QuaternionSubtract(Quaternion q1, Quaternion q2) → Quaternion
Component-wise subtraction.
QuaternionSubtractValue(Quaternion q, double sub) → Quaternion
QuaternionToAxisAngle(Quaternion q) → (Vector3, double)
Returns (axis, angle) — replaces the C out-pointer API.
QuaternionToEuler(Quaternion q) → Vector3
Returns Euler angles (roll, pitch, yaw) as Vector3 (radians).
QuaternionToMatrix(Quaternion q) → Matrix4
Rotation matrix from quaternion (column-major Matrix4).
QuaternionTransform(Quaternion q, Matrix4 mat) → Quaternion
Remap(double value, double inputStart, double inputEnd, double outputStart, double outputEnd) → double
Vector2Add(Vector2 v1, Vector2 v2) → Vector2
Vector2AddValue(Vector2 v, double add) → Vector2
Vector2Angle(Vector2 v1, Vector2 v2) → double
Signed angle from v1 to v2 in radians.
Vector2Clamp(Vector2 v, Vector2 min, Vector2 max) → Vector2
Vector2ClampValue(Vector2 v, double min, double max) → Vector2
Vector2Distance(Vector2 v1, Vector2 v2) → double
Vector2DistanceSqr(Vector2 v1, Vector2 v2) → double
Vector2Divide(Vector2 v1, Vector2 v2) → Vector2
Component-wise divide.
Vector2DotProduct(Vector2 v1, Vector2 v2) → double
Vector2Equals(Vector2 p, Vector2 q, [double epsilon = 1e-10]) → bool
Vector2Invert(Vector2 v) → Vector2
Vector2Length(Vector2 v) → double
Vector2LengthSqr(Vector2 v) → double
Vector2Lerp(Vector2 v1, Vector2 v2, double amount) → Vector2
Vector2MoveTowards(Vector2 v, Vector2 target, double maxDistance) → Vector2
Vector2Multiply(Vector2 v1, Vector2 v2) → Vector2
Component-wise multiply.
Vector2Negate(Vector2 v) → Vector2
Vector2Normalize(Vector2 v) → Vector2
Vector2One() → Vector2
Vector2Reflect(Vector2 v, Vector2 normal) → Vector2
Vector2Rotate(Vector2 v, double angle) → Vector2
Vector2Scale(Vector2 v, double scale) → Vector2
Vector2Subtract(Vector2 v1, Vector2 v2) → Vector2
Vector2SubtractValue(Vector2 v, double sub) → Vector2
Vector2Transform(Vector2 v, Matrix4 mat) → Vector2
Transform v as a 2D point (x, y, 0, 1) by mat.
Vector2Zero() → Vector2
Vector3Add(Vector3 v1, Vector3 v2) → Vector3
Vector3AddValue(Vector3 v, double add) → Vector3
Vector3Angle(Vector3 v1, Vector3 v2) → double
Vector3Barycenter(Vector3 p, Vector3 a, Vector3 b, Vector3 c) → Vector3
Barycentric coordinates (u, v, w) of p relative to triangle (a, b, c).
Vector3Clamp(Vector3 v, Vector3 min, Vector3 max) → Vector3
Vector3ClampValue(Vector3 v, double min, double max) → Vector3
Vector3CrossProduct(Vector3 v1, Vector3 v2) → Vector3
Vector3Distance(Vector3 v1, Vector3 v2) → double
Vector3DistanceSqr(Vector3 v1, Vector3 v2) → double
Vector3Divide(Vector3 v1, Vector3 v2) → Vector3
Component-wise divide.
Vector3DotProduct(Vector3 v1, Vector3 v2) → double
Vector3Equals(Vector3 p, Vector3 q) → bool
Vector3Invert(Vector3 v) → Vector3
Vector3Length(Vector3 v) → double
Vector3LengthSqr(Vector3 v) → double
Vector3Lerp(Vector3 v1, Vector3 v2, double amount) → Vector3
Vector3Max(Vector3 v1, Vector3 v2) → Vector3
Vector3Min(Vector3 v1, Vector3 v2) → Vector3
Vector3Multiply(Vector3 v1, Vector3 v2) → Vector3
Component-wise multiply.
Vector3Negate(Vector3 v) → Vector3
Vector3Normalize(Vector3 v) → Vector3
Vector3One() → Vector3
Vector3OrthoNormalize(Vector3 v1, Vector3 v2) → (Vector3, Vector3)
Gram-Schmidt orthonormalization. Returns the normalized pair (v1, v2). In C this modified v1/v2 in-place via pointers.
Vector3Perpendicular(Vector3 v) → Vector3
Returns a vector perpendicular to v.
Vector3Reflect(Vector3 v, Vector3 normal) → Vector3
Vector3Refract(Vector3 v, Vector3 n, double r) → Vector3
Refraction direction for incident ray v, surface normal n, index ratio r.
Vector3RotateByAxisAngle(Vector3 v, Vector3 axis, double angle) → Vector3
Rotate v around axis by angle (radians) — Rodrigues' formula.
Vector3RotateByQuaternion(Vector3 v, Quaternion q) → Vector3
Rotate v by quaternion q using the sandwich product v' = q·v·q⁻¹.
Vector3Scale(Vector3 v, double scalar) → Vector3
Vector3Subtract(Vector3 v1, Vector3 v2) → Vector3
Vector3SubtractValue(Vector3 v, double sub) → Vector3
Vector3Transform(Vector3 v, Matrix4 mat) → Vector3
Transform v as a 3D point (x, y, z, 1) by mat.
Vector3Unproject(Vector3 source, Matrix4 projection, Matrix4 view) → Vector3
Unproject a screen-space point back into object space.
Vector3Zero() → Vector3
Wrap(double value, double min, double max) → double