本文整理汇总了C#中UnityEngine.Quaternion.Normalize方法的典型用法代码示例。如果您正苦于以下问题:C# Quaternion.Normalize方法的具体用法?C# Quaternion.Normalize怎么用?C# Quaternion.Normalize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UnityEngine.Quaternion
的用法示例。
在下文中一共展示了Quaternion.Normalize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DecomposeSwingTwist
/// <summary>
/// Decomposes the quaterniong into a twist (around the axis) and a swing (rotation) around a vector perpendicular
/// to the axis.
///
/// To rebuild, use:
/// rThis = rSwing * rTwist
///
/// http://www.alinenormoyle.com/weblog/?p=726
/// </summary>
/// <param name="rThis"></param>
/// <param name="rAxis"></param>
/// <param name="rSwing"></param>
/// <param name="rTwist"></param>
public static void DecomposeSwingTwist(this Quaternion rThis, Vector3 rAxis, ref Quaternion rSwing, ref Quaternion rTwist)
{
Vector3 lTwistAxis = rAxis.normalized;
// Dot(v, vTwist)
float lDot = Vector3.Dot(new Vector3(rThis.x, rThis.y, rThis.z), lTwistAxis);
// p = dot * vTwist
lTwistAxis = lTwistAxis * lDot;
// qTwist = (p, w)
rTwist.x = lTwistAxis.x;
rTwist.y = lTwistAxis.y;
rTwist.z = lTwistAxis.z;
rTwist.w = rThis.w;
// qTwist.Normalize
rTwist = rTwist.Normalize();
rSwing = rThis * Quaternion.Inverse(rTwist);
}