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
-