Skip to content

szabolcsdombi/miniglm

Repository files navigation

miniglm

Minimalist pythonic matrix, vector, quaternion math.

Types

  • SCALAR is a python float
  • VECTOR is a tuple of three floats
  • QUATERNION is a tuple of four floats (xyzw)
  • MATRIX is a tuple of nine floats (column-major)

Methods

add(a, b)
    VECTOR VECTOR -> vector addition
    VECTOR SCALAR -> (x, y, z) + s = (x+s, y+s, z+s)

sub(a, b)
    VECTOR VECTOR -> vector subtraction
    VECTOR SCALAR -> (x, y, z) - s = (x-s, y-s, z-s)

mul(a, b)
    VECTOR SCALAR -> vector scaling by a scalar
    VECTOR VECTOR -> element-wise multiplication
    QUATERNION VECTOR -> quaternion scaling by a scalar
    QUATERNION QUATERNION -> quaternion rotates a quaternion resulting in a quaternion
    QUATERNION MATRIX -> quaternion rotates a matrix resulting in a matrix
    MATRIX VECTOR -> matrix rotates a vector resulting in a vector
    MATRIX QUATERNION -> matrix rotates a quaternion resulting in a quaternion
    MATRIX MATRIX -> matrix rotates a matrix resulting in a matrix

mix(a, b, s)
    SCALAR SCALAR -> simple mix of scalars
    VECTOR VECTOR -> simple mix of vectors
    QUATERNION QUATERNION -> quaternion rotation spherical interpolation (slerp)
    MATRIX MATRIX -> matrix rotation spherical interpolation (slerp)

cross(a, b)
    VECTOR VECTOR -> vector cross product
    QUATERNION QUATERNION -> quaternion cross product

dot(a, b)
    VECTOR VECTOR -> vector dot product
    QUATERNION QUATERNION -> quaternion dot product

rotate(angle, axis)
    SCALAR VECTOR -> rotation by angle radians along the axis resulting in a quaternion

split(a)
    QUATERNION -> angle and axis suitable for rotate
    MATRIX -> matrix columns

norm(a)
    VECTOR -> vector normalize
    QUATERNION -> quaternion normalize
    MATRIX -> normalized quaternion derived from the matrix converted back to a matrix

length(a)
    VECTOR -> vector length
    QUATERNION -> quaternion length

inv(a)
    QUATERNION -> inverse quaternion
    MATRIX -> inverse matrix

det(a)
    MATRIX -> matrix determinant

cast(a)
    QUATERNION -> converts the quaternion to a matrix
    MATRIX -> converts the matrix to a quaternion

swizzle(a, b, swizzle)
    VECTOR -> swaps vector elements
    QUATERNION -> swaps quaternion elements

pack(a)
    SCALAR -> packed float resulting in 4 bytes
    VECTOR -> packed vector resulting in 12 bytes
    QUATERNION -> packed quaternion resulting in 16 bytes (xyzw)
    MATRIX -> packed matrix resulting in 36 bytes (column-major)