idTech4.Extensions.ToAngles C# (CSharp) Метод

ToAngles() публичный статический Метод

public static ToAngles ( this m ) : idAngles
m this
Результат idTech4.Math.idAngles
		public static idAngles ToAngles(this Matrix m)
		{
			float sp = m.M13;

			// cap off our sin value so that we don't get any NANs
			if(sp > 1.0f)
			{
				sp = 1.0f;
			}
			else if(sp < -1.0f)
			{
				sp = -1.0f;
			}

			double theta = -System.Math.Asin(sp);
			double cp = System.Math.Cos(theta);

			idAngles angles = new idAngles();

			if(cp > (8192.0f * idMath.Epsilon))
			{
				angles.Pitch = MathHelper.ToDegrees((float) theta);
				angles.Yaw = MathHelper.ToDegrees(idMath.Atan2(m.M12, m.M11));
				angles.Roll = MathHelper.ToDegrees(idMath.Atan2(m.M23, m.M33));
			}
			else
			{
				angles.Pitch = MathHelper.ToDegrees((float) theta);
				angles.Yaw = MathHelper.ToDegrees(-idMath.Atan2(m.M21, m.M22));
				angles.Roll = 0;
			}

			return angles;
		}
		#endregion