DVMat4.compose constructor

DVMat4.compose(
  1. DVVec3 t,
  2. DVQuat r,
  3. DVVec3 s
)

Translation * rotation * scale, the order glTF and the engine compose a node's local transform in.

Implementation

factory DVMat4.compose(DVVec3 t, DVQuat r, DVVec3 s) {
  final double x2 = r.x + r.x, y2 = r.y + r.y, z2 = r.z + r.z;
  final double xx = r.x * x2, xy = r.x * y2, xz = r.x * z2;
  final double yy = r.y * y2, yz = r.y * z2, zz = r.z * z2;
  final double wx = r.w * x2, wy = r.w * y2, wz = r.w * z2;
  return DVMat4._(Float64List(16)
    ..[0] = (1 - (yy + zz)) * s.x
    ..[1] = (xy + wz) * s.x
    ..[2] = (xz - wy) * s.x
    ..[4] = (xy - wz) * s.y
    ..[5] = (1 - (xx + zz)) * s.y
    ..[6] = (yz + wx) * s.y
    ..[8] = (xz + wy) * s.z
    ..[9] = (yz - wx) * s.z
    ..[10] = (1 - (xx + yy)) * s.z
    ..[12] = t.x
    ..[13] = t.y
    ..[14] = t.z
    ..[15] = 1);
}