MatrixD.compose constructor
MatrixD.compose(
- Vector3D translation,
- QuaternionD rotation,
- Vector3D scale
Returns a transformation matrix composed of a rotational, translational and scaling components.
Implementation
factory MatrixD.compose(
Vector3D translation,
QuaternionD rotation,
Vector3D scale,
) {
Vector3D right = .vec3(1.0, 0.0, 0.0);
Vector3D up = .vec3(0.0, 1.0, 0.0);
Vector3D forward = .vec3(0.0, 0.0, 1.0);
right = right.scale(scale.x);
up = up.scale(scale.y);
forward = forward.scale(scale.z);
right = right.rotateByQuaternion(rotation);
up = up.rotateByQuaternion(rotation);
forward = forward.rotateByQuaternion(rotation);
return .mat4RowMajor(
right.x, up.x, forward.x, translation.x,
right.y, up.y, forward.y, translation.y,
right.z, up.z, forward.z, translation.z,
0.0, 0.0, 0.0, 1.0,
);
}