当前位置: 首页>>代码示例>>C#>>正文


C# Quaternion.Dot方法代码示例

本文整理汇总了C#中Axiom.Math.Quaternion.Dot方法的典型用法代码示例。如果您正苦于以下问题:C# Quaternion.Dot方法的具体用法?C# Quaternion.Dot怎么用?C# Quaternion.Dot使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Axiom.Math.Quaternion的用法示例。


在下文中一共展示了Quaternion.Dot方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Nlerp

		public static Quaternion Nlerp( Real fT, Quaternion rkP, Quaternion rkQ, bool shortestPath )
		{
			Quaternion result;
			var fCos = rkP.Dot( rkQ );
			if ( fCos < 0.0f && shortestPath )
			{
				result = rkP + fT*( ( -rkQ ) - rkP );
			}
			else
			{
				result = rkP + fT*( rkQ - rkP );
			}
			result.Normalize();
			return result;
		}
开发者ID:ryan-bunker,项目名称:axiom3d,代码行数:15,代码来源:Quaternion.cs

示例2: Slerp

		/// <summary>
		/// 
		/// </summary>
		/// <param name="time"></param>
		/// <param name="quatA"></param>
		/// <param name="quatB"></param>
		/// <param name="useShortestPath"></param>
		/// <returns></returns>
		public static Quaternion Slerp( Real time, Quaternion quatA, Quaternion quatB, bool useShortestPath )
		{
			var cos = quatA.Dot( quatB );

			var angle = (Real)Utility.ACos( cos );

			if ( Utility.Abs( angle ) < EPSILON )
			{
				return quatA;
			}

			var sin = Utility.Sin( angle );
			var inverseSin = 1.0f/sin;
			var coeff0 = Utility.Sin( ( 1.0f - time )*angle )*inverseSin;
			var coeff1 = Utility.Sin( time*angle )*inverseSin;

			Quaternion result;

			if ( cos < 0.0f && useShortestPath )
			{
				coeff0 = -coeff0;
				// taking the complement requires renormalisation
				var t = coeff0*quatA + coeff1*quatB;
				t.Normalize();
				result = t;
			}
			else
			{
				result = ( coeff0*quatA + coeff1*quatB );
			}

			return result;
		}
开发者ID:ryan-bunker,项目名称:axiom3d,代码行数:41,代码来源:Quaternion.cs


注:本文中的Axiom.Math.Quaternion.Dot方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。