QuaternionInvert function

Quaternion QuaternionInvert(
  1. Quaternion q
)

True inverse: conjugate / length² (for non-unit quaternions).

Implementation

Quaternion QuaternionInvert(Quaternion q) {
  final lenSq = q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w;
  if (lenSq == 0) return q;
  return Quaternion(-q.x / lenSq, -q.y / lenSq, -q.z / lenSq, q.w / lenSq);
}