A 3x4 affine transform, row-major: three rows of four (_11 to _34), so there is no bottom row and the transform is a rotation or scale part in the left 3x3 and a translation in _14, _24, _34. Rows are Vector4, columns have three entries. Matrix4x3 * Vector4 gives a Vector3, and Matrix4x3 * Matrix4x3 composes two transforms.
m := Matrix4x3_Identity;
m._14 = 7;
assert(m * xyzw(1, 2, 3, 1) == xyz(8, 2, 3)); // w = 1 picks up the translation
assert(m * xyzw(1, 2, 3, 0) == xyz(1, 2, 3)); // w = 0 is a directionFields
- _11: float
- _12: float
- _13: float
- _14: float
- _21: float
- _22: float
- _23: float
- _24: float
- _31: float
- _32: float
- _33: float
- _34: float
- v: [3] Vector4
- coef: [3][4] float
- floats: [12] float