274 {
275 float num = 1f - amount;
277 float num2 = quaternion1.X * quaternion2.X + quaternion1.Y * quaternion2.Y + quaternion1.Z * quaternion2.Z + quaternion1.W * quaternion2.W;
278 if (num2 >= 0f)
279 {
280 result.X = num * quaternion1.X + amount * quaternion2.X;
281 result.Y = num * quaternion1.Y + amount * quaternion2.Y;
282 result.Z = num * quaternion1.Z + amount * quaternion2.Z;
283 result.W = num * quaternion1.W + amount * quaternion2.W;
284 }
285 else
286 {
287 result.X = num * quaternion1.X - amount * quaternion2.X;
288 result.Y = num * quaternion1.Y - amount * quaternion2.Y;
289 result.Z = num * quaternion1.Z - amount * quaternion2.Z;
290 result.W = num * quaternion1.W - amount * quaternion2.W;
291 }
292 float x = result.X * result.X + result.Y * result.Y + result.Z * result.Z + result.W * result.W;
293 float num3 = 1f / MathF.Sqrt(x);
294 result.X *= num3;
295 result.Y *= num3;
296 result.Z *= num3;
297 result.W *= num3;
298 return result;
299 }
Quaternion(float x, float y, float z, float w)