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