QuaternionExtensions.cs 1016 B

12345678910111213141516171819202122232425262728293031323334
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. namespace O3DWB
  4. {
  5. public static class QuaternionExtensions
  6. {
  7. #region Public Static Functions
  8. public static Quaternion GetRelativeRotation(this Quaternion from, Quaternion to)
  9. {
  10. return to * Quaternion.Inverse(from);
  11. }
  12. public static float GetMagnitude(this Quaternion quaternion)
  13. {
  14. return Mathf.Sqrt(quaternion.x * quaternion.x + quaternion.y * quaternion.y + quaternion.z * quaternion.z + quaternion.w * quaternion.w);
  15. }
  16. public static Quaternion NormalizeEx(this Quaternion quaternion)
  17. {
  18. Quaternion normalizedQuat = quaternion;
  19. float invMagnitude = 1.0f / quaternion.GetMagnitude();
  20. normalizedQuat.x *= invMagnitude;
  21. normalizedQuat.y *= invMagnitude;
  22. normalizedQuat.z *= invMagnitude;
  23. normalizedQuat.w *= invMagnitude;
  24. return normalizedQuat;
  25. }
  26. #endregion
  27. }
  28. }
  29. #endif