Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Slerp() [1/2]

static Quaternion Microsoft.Xna.Framework.Quaternion.Slerp ( Quaternion quaternion1,
Quaternion quaternion2,
float amount )
inlinestatic

Definition at line 319 of file Quaternion.cs.

320 {
321 float num = quaternion1.X * quaternion2.X + quaternion1.Y * quaternion2.Y + quaternion1.Z * quaternion2.Z + quaternion1.W * quaternion2.W;
322 bool flag = false;
323 if (num < 0f)
324 {
325 flag = true;
326 num = 0f - num;
327 }
328 float num2;
329 float num3;
330 if (num > 0.999999f)
331 {
332 num2 = 1f - amount;
333 num3 = (flag ? (0f - amount) : amount);
334 }
335 else
336 {
337 float num4 = (float)Math.Acos(num);
338 float num5 = (float)(1.0 / Math.Sin(num4));
339 num2 = (float)Math.Sin((1f - amount) * num4) * num5;
340 num3 = (flag ? ((float)(0.0 - Math.Sin(amount * num4)) * num5) : ((float)Math.Sin(amount * num4) * num5));
341 }
342 Quaternion result = default(Quaternion);
343 result.X = num2 * quaternion1.X + num3 * quaternion2.X;
344 result.Y = num2 * quaternion1.Y + num3 * quaternion2.Y;
345 result.Z = num2 * quaternion1.Z + num3 * quaternion2.Z;
346 result.W = num2 * quaternion1.W + num3 * quaternion2.W;
347 return result;
348 }
static double Acos(double d)
static double Sin(double a)
Quaternion(float x, float y, float z, float w)
Definition Quaternion.cs:29

References System.Math.Acos(), System.Math.Sin(), Microsoft.Xna.Framework.Quaternion.W, Microsoft.Xna.Framework.Quaternion.X, Microsoft.Xna.Framework.Quaternion.Y, and Microsoft.Xna.Framework.Quaternion.Z.