Skip to content

Outline

8BitSlime edited this page Sep 12, 2017 · 2 revisions

MMath outline

The information here is not guaranteed to be up to date, but it may still be helpful.

Basic types:

Scalars

Typedef:
Default MMATH_DOUBLE
Type float double
Size 4 bytes 8 bytes

Vectors

Types:
Name Data Size (single) Size (double) Accessors
vec2 2 scalars 8 bytes 16 bytes scalar data[2]
scalar x, y
vec3 3 scalars 12 bytes 24 bytes scalar data[3]
scalar x, y, z
scalar r, g, b
vec4 4 scalars 16 bytes 32 bytes scalar data[4]
scalar x, y, z, w
scalar r, g, b, a
Functions:
vec2 vec3ToVec2(vec3 a)
vec2 vec4ToVec2(vec4 a)
vec3 vec2ToVec3(vec2 a, scalar z)
vec3 vec4ToVec3(vec4 a)
vec4 vec2ToVec4(vec2 a, scalar z, scalar w)
vec4 vec3ToVec4(vec3 a, scalar w)

vec3 vecCross(vec3 a, vec3 b)

vec vecAdd(vec a, vec b)
vec vecSub(vec a, vec b)
vec vecMul(vec a, vec b)
vec vecDiv(vec a, vec b)
vec vecAddScalar(vec a, scalar b)
vec vecSubScalar(vec a, scalar b)
vec vecMulScalar(vec a, scalar b)
vec vecDivScalar(vec a, scalar b)
vec vecNormalize(vec a)
vec vecLerp(vec f, vec l, scalar t)
scalar vecDot(vec a, vec b)
scalar vecLength(vec a)

Quaternions

Types:
Name Data Size (single) Size (double) Accessors
quat 4 scalars 16 bytes 32 bytes scalar data[4]
vec4 vec
vec3 axis
scalar x, y, z, w
Functions:
quat quatAdd(quat a, quat b)
quat quatMul(quat a, quat b)
quat quatMulVec3(quat a, vec3 b)
quat quatMulScalar(quat a, scalar b)
quat quatNormalize(quat a)
quat quatNegate(quat a)
quat quatConjugate(quat a)
quat quatInverse(quat a)
quat quatEuler(vec3 e)
quat quatAxisAngle(vec3 axis, scalar r)
quat quatSlerp(quat f, quat l, scalar t)
mat3 quatToMat3(quat a)
scalar quatLength(quat a)

Matrices

Types:
Name Data Size (single) Size (double) Accessors
mat2 4 scalars 16 bytes 32 bytes scalar data[4]
vec2 row[2]
scalar x0, y0
scalar x1, y1
mat3 9 scalars 24 bytes 48 bytes scalar data[9]
vec3 row[3]
scalar x0, y0, z0
scalar x1, y1, z1
scalar x2, y2, z2
mat4 16 scalars 64 bytes 128 bytes scalar data[16]
vec4 row[4]
scalar x0, y0, z0, w0
scalar x1, y1, z1, w1
scalar x2, y2, z2, w2
scalar x3, y3, z3, w3
Functions:
mat2 mat3ToVec2(mat3 a)
mat2 mat4ToVec2(mat4 a)
mat3 mat2ToVec3(mat2 a, scalar z)
mat3 mat4ToVec3(mat4 a)
mat4 mat2ToVec4(mat2 a, scalar z, scalar w)
mat4 mat3ToVec4(mat3 a, scalar w)

mat3 mat3RotateX(scalar r)
mat3 mat3RotateY(scalar r)
mat3 mat3RotateZ(scalar r)

mat4 mat4Perspective(scalar aspect, scalar fovY, scalar zNear, scalar zFar)
mat4 mat4LookAt(vec3 eye, vec3 center, vec3 up)

mat matDiagonal(scalar a)
mat matAdd(mat a, mat b)
mat matSub(mat a, mat b)
mat matMul(mat a, mat b)
mat matMulScalar(mat a, scalar b)
mat matTranspose(mat a)
vec matMulVec(mat a, vec b)

Transformations

Types:
Name Data Size (single) Size (double) Accessors
transformation 2 vec3s
1 quat
40 bytes 80 bytes vec3 pos
vec3 scale
quat rot
Functions:
transform transformMul(transform a, transform b)
transform transformLerp(transform f, transform l, scalar t)
mat4 transformToMat4(transform t)