setProduct method

void setProduct(
  1. Quaternion a,
  2. Quaternion b
)

Set to a ยท b (apply b, then a). Safe when either is this.

Implementation

void setProduct(Quaternion a, Quaternion b) {
  final ax = a.x, ay = a.y, az = a.z, aw = a.w;
  final bx = b.x, by = b.y, bz = b.z, bw = b.w;
  w = aw * bw - ax * bx - ay * by - az * bz;
  x = aw * bx + ax * bw + ay * bz - az * by;
  y = aw * by - ax * bz + ay * bw + az * bx;
  z = aw * bz + ax * by - ay * bx + az * bw;
}