16 transform = { m[3][0],m[3][1],m[3][2] };
18 float det = determinant(basis);
19 float sgn = det > 0 ? 1 : -1;
21 length(
float3{ basis[0][0], basis[0][1], basis[0][2] }) * sgn,
22 length(
float3{ basis[1][0], basis[1][1], basis[1][2] }) * sgn,
23 length(
float3{ basis[2][0], basis[2][1], basis[2][2] }) * sgn
26 basis[0] /= scale.x == .0f ? 1.0f : scale.x;
27 basis[1] /= scale.y == .0f ? 1.0f : scale.y;
28 basis[2] /= scale.z == .0f ? 1.0f : scale.z;
29 rotation = quat_cast(basis);