Quaternion.fromEuler constructor

Quaternion.fromEuler(
  1. num phi,
  2. num theta,
  3. num psi
)

Constructs a quaternion from an euler rotation.

Implementation

factory Quaternion.fromEuler(num phi, num theta, num psi) {
  final halfPhi = phi * 0.5;
  final halfTheta = theta * 0.5;
  final halfPsi = psi * 0.5;

  final cosPhi = halfPhi.cos();
  final cosTheta = halfTheta.cos();
  final cosPsi = halfPsi.cos();

  final sinPhi = halfPhi.sin();
  final sinTheta = halfTheta.sin();
  final sinPsi = halfPsi.sin();

  return Quaternion(
    cosTheta * cosPsi * cosPhi - sinTheta * sinPsi * sinPhi,
    sinTheta * cosPsi * cosPhi - cosTheta * sinPsi * sinPhi,
    cosTheta * sinPsi * cosPhi + sinTheta * cosPsi * sinPhi,
    cosTheta * cosPsi * sinPhi + sinTheta * sinPsi * cosPhi,
  );
}