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

◆ Slerp()

static Quaternion System.Numerics.Quaternion.Slerp ( Quaternion quaternion1,
Quaternion quaternion2,
float amount )
inlinestatic

Definition at line 331 of file Quaternion.cs.

332 {
333 float num = quaternion1.X * quaternion2.X + quaternion1.Y * quaternion2.Y + quaternion1.Z * quaternion2.Z + quaternion1.W * quaternion2.W;
334 bool flag = false;
335 if (num < 0f)
336 {
337 flag = true;
338 num = 0f - num;
339 }
340 float num2;
341 float num3;
342 if (num > 0.999999f)
343 {
344 num2 = 1f - amount;
345 num3 = (flag ? (0f - amount) : amount);
346 }
347 else
348 {
349 float num4 = MathF.Acos(num);
350 float num5 = 1f / MathF.Sin(num4);
351 num2 = MathF.Sin((1f - amount) * num4) * num5;
352 num3 = (flag ? ((0f - MathF.Sin(amount * num4)) * num5) : (MathF.Sin(amount * num4) * num5));
353 }
354 System.Runtime.CompilerServices.Unsafe.SkipInit(out Quaternion result);
355 result.X = num2 * quaternion1.X + num3 * quaternion2.X;
356 result.Y = num2 * quaternion1.Y + num3 * quaternion2.Y;
357 result.Z = num2 * quaternion1.Z + num3 * quaternion2.Z;
358 result.W = num2 * quaternion1.W + num3 * quaternion2.W;
359 return result;
360 }
Quaternion(float x, float y, float z, float w)
Definition Quaternion.cs:21

References System.MathF.Acos(), System.MathF.Sin(), System.Numerics.Quaternion.W, System.Numerics.Quaternion.X, System.Numerics.Quaternion.Y, and System.Numerics.Quaternion.Z.