summaryrefslogtreecommitdiffhomepage
path: root/src/raymath.h
diff options
context:
space:
mode:
authorHristo Stamenov <[email protected]>2021-05-29 14:53:00 +0300
committerGitHub <[email protected]>2021-05-29 13:53:00 +0200
commitbeeac18eb120ef959b785d9c5832c4fd5c9fde44 (patch)
treefb2bed4b6b1e2b9820e08b5bb4f5b0e19ef5e4e6 /src/raymath.h
parent470574517ab61ed71d769261cdcc136e8d0220d8 (diff)
downloadraylib-beeac18eb120ef959b785d9c5832c4fd5c9fde44.tar.gz
raylib-beeac18eb120ef959b785d9c5832c4fd5c9fde44.zip
Fix QuaternionToMatrix returning transposed result. (#1793)
Diffstat (limited to 'src/raymath.h')
-rw-r--r--src/raymath.h39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/raymath.h b/src/raymath.h
index e396d5a3..7ab79860 100644
--- a/src/raymath.h
+++ b/src/raymath.h
@@ -1389,23 +1389,28 @@ RMDEF Quaternion QuaternionFromMatrix(Matrix mat)
RMDEF Matrix QuaternionToMatrix(Quaternion q)
{
Matrix result = MatrixIdentity();
-
- float a2 = 2*(q.x*q.x), b2=2*(q.y*q.y), c2=2*(q.z*q.z); //, d2=2*(q.w*q.w);
-
- float ab = 2*(q.x*q.y), ac=2*(q.x*q.z), bc=2*(q.y*q.z);
- float ad = 2*(q.x*q.w), bd=2*(q.y*q.w), cd=2*(q.z*q.w);
-
- result.m0 = 1 - b2 - c2;
- result.m1 = ab - cd;
- result.m2 = ac + bd;
-
- result.m4 = ab + cd;
- result.m5 = 1 - a2 - c2;
- result.m6 = bc - ad;
-
- result.m8 = ac - bd;
- result.m9 = bc + ad;
- result.m10 = 1 - a2 - b2;
+
+ float a2 = q.x * q.x;
+ float b2 = q.y * q.y;
+ float c2 = q.z * q.z;
+ float ac = q.x * q.z;
+ float ab = q.x * q.y;
+ float bc = q.y * q.z;
+ float ad = q.w * q.x;
+ float bd = q.w * q.y;
+ float cd = q.w * q.z;
+
+ result.m0 = 1 - 2 * (b2 + c2);
+ result.m1 = 2 * (ab + cd);
+ result.m2 = 2 * (ac - bd);
+
+ result.m4 = 2 * (ab - cd);
+ result.m5 = 1 - 2 * (a2 + c2);
+ result.m6 = 2 * (bc + ad);
+
+ result.m8 = 2 * (ac + bd);
+ result.m9 = 2 * (bc - ad);
+ result.m10 = 1 - 2 * (a2 + b2);
return result;
}