summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authormasterex1000 <[email protected]>2021-03-01 16:29:48 -0700
committerGitHub <[email protected]>2021-03-02 00:29:48 +0100
commit4e6253b54686a2c353a3256947a596f3a3c9bcd0 (patch)
tree9fe3cee6aa6fd70c13395e1c5d570b724544d322 /src
parent5902cc6d9b95b08a4dd96461beb2afbb241a23ce (diff)
downloadraylib-4e6253b54686a2c353a3256947a596f3a3c9bcd0.tar.gz
raylib-4e6253b54686a2c353a3256947a596f3a3c9bcd0.zip
Add check to flip quaternion (#1624)
Diffstat (limited to 'src')
-rw-r--r--src/raymath.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/raymath.h b/src/raymath.h
index 63fc9696..fd9b620a 100644
--- a/src/raymath.h
+++ b/src/raymath.h
@@ -1271,6 +1271,11 @@ RMDEF Quaternion QuaternionSlerp(Quaternion q1, Quaternion q2, float amount)
float cosHalfTheta = q1.x*q2.x + q1.y*q2.y + q1.z*q2.z + q1.w*q2.w;
+ if (cosHalfTheta < 0) {
+ q2.x = -q2.x; q2.y = -q2.y; q2.z = -q2.z; q2.w = -q2.w;
+ cosHalfTheta = -cosHalfTheta;
+ }
+
if (fabs(cosHalfTheta) >= 1.0f) result = q1;
else if (cosHalfTheta > 0.95f) result = QuaternionNlerp(q1, q2, amount);
else