Vector3RotateByQuaternion function

Vector3 Vector3RotateByQuaternion(
  1. Vector3 v,
  2. Quaternion q
)

Rotate v by quaternion q using the sandwich product v' = q·v·q⁻¹.

Implementation

Vector3 Vector3RotateByQuaternion(Vector3 v, Quaternion q) {
  final qv = Vector3(q.x, q.y, q.z);
  return v.scaled(q.w * q.w - qv.dot(qv)) +
      qv.scaled(2.0 * qv.dot(v)) +
      qv.cross(v).scaled(2.0 * q.w);
}