public static GetQuatExp ( |
||
q | ||
리턴 |
public static Quaternion GetQuatExp(Quaternion q)
{
Quaternion quaternion = q;
float f = Mathf.Sqrt(((q.x * q.x) + (q.y * q.y)) + (q.z * q.z));
float num2 = Mathf.Sin(f);
quaternion.w = Mathf.Cos(f);
if (Mathf.Abs(num2) > 0.0001)
{
float num3 = num2 / f;
quaternion.x = num3 * q.x;
quaternion.y = num3 * q.y;
quaternion.z = num3 * q.z;
}
return quaternion;
}
public static Quaternion GetSquadIntermediate(Quaternion q0, Quaternion q1, Quaternion q2) { Quaternion quatConjugate = MathUtils.GetQuatConjugate(q1); Quaternion quatLog = MathUtils.GetQuatLog(quatConjugate * q0); Quaternion quatLog2 = MathUtils.GetQuatLog(quatConjugate * q2); Quaternion q3 = new Quaternion(-0.25f * (quatLog.x + quatLog2.x), -0.25f * (quatLog.y + quatLog2.y), -0.25f * (quatLog.z + quatLog2.z), -0.25f * (quatLog.w + quatLog2.w)); return(q1 * MathUtils.GetQuatExp(q3)); }