# Matrix.*

static Matrix *(Matrix a, Matrix b)

Multiplies two matrices together! This is a great way to combine transform operations. Note that StereoKit’s matrices are row-major, and multiplication order is important! To translate, then scale, multiple in order of ‘translate * scale’.

Matrix a First Matrix.
Matrix b Second Matrix.
RETURNS: Matrix Result of matrix multiplication.
static Vec3 *(Matrix a, Vec3 b)

Multiplies the vector by the Matrix! Since only a 1x4 vector can be multiplied against a 4x4 matrix, this uses ‘1’ for the 4th element, so the result will also include translation! To exclude translation, use Matrix.TransformNormal.

Matrix a A transform matrix.
Vec3 b Any Vector.
RETURNS: Vec3 The Vec3 transformed by the matrix, including translation.
static Ray *(Matrix a, Ray b)

Transforms a Ray by the Matrix! The position and direction are both multiplied by the matrix, accounting properly for which should include translation, and which should not.

Matrix a A transform matrix.
Ray b A Ray to be transformed.
RETURNS: Ray A Ray transformed by the Matrix.
static Pose *(Matrix a, Pose b)

Transforms a Pose by the Matrix! The position and orientation are both transformed by the matrix, accounting properly for the Pose’s quaternion.

Matrix a A transform matrix.
Pose b A Pose to be transformed.
RETURNS: Pose A Ray transformed by the Matrix.

Found an issue with these docs, or have some additional questions? Create an Issue on Github!