applyQuaternion method

void applyQuaternion (Quaternion arg)

Applies a quaternion transform.

Implementation

void applyQuaternion(Quaternion arg) {
  final Float64List argStorage = arg._qStorage;
  final double v0 = _v3storage[0];
  final double v1 = _v3storage[1];
  final double v2 = _v3storage[2];
  final double qx = argStorage[0];
  final double qy = argStorage[1];
  final double qz = argStorage[2];
  final double qw = argStorage[3];
  final double ix = qw * v0 + qy * v2 - qz * v1;
  final double iy = qw * v1 + qz * v0 - qx * v2;
  final double iz = qw * v2 + qx * v1 - qy * v0;
  final double iw = -qx * v0 - qy * v1 - qz * v2;
  _v3storage[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;
  _v3storage[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;
  _v3storage[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;
}