ZeroVR/ZeroPacientVR/Assets/Octave3D World Builder/Scripts/Extensions/QuaternionExtensions.cs

34 lines
1016 B
C#

#if UNITY_EDITOR
using UnityEngine;
namespace O3DWB
{
public static class QuaternionExtensions
{
#region Public Static Functions
public static Quaternion GetRelativeRotation(this Quaternion from, Quaternion to)
{
return to * Quaternion.Inverse(from);
}
public static float GetMagnitude(this Quaternion quaternion)
{
return Mathf.Sqrt(quaternion.x * quaternion.x + quaternion.y * quaternion.y + quaternion.z * quaternion.z + quaternion.w * quaternion.w);
}
public static Quaternion NormalizeEx(this Quaternion quaternion)
{
Quaternion normalizedQuat = quaternion;
float invMagnitude = 1.0f / quaternion.GetMagnitude();
normalizedQuat.x *= invMagnitude;
normalizedQuat.y *= invMagnitude;
normalizedQuat.z *= invMagnitude;
normalizedQuat.w *= invMagnitude;
return normalizedQuat;
}
#endregion
}
}
#endif