diff options
author | rafallus <rafaelmtzg@gmail.com> | 2021-03-29 13:57:29 -0600 |
---|---|---|
committer | rafallus <rafaelmtzg@gmail.com> | 2021-03-29 13:57:34 -0600 |
commit | 91967229355d381ee2b4d9d6ab126a3c5e8b2a84 (patch) | |
tree | 189096e3b47face165c5388b124d315734f21412 /core | |
parent | 76a2e764689b0cd333ff2a2139b5ea671ce9b321 (diff) |
Fix Quat multiplication
x, y, z values were updated too early
Diffstat (limited to 'core')
-rw-r--r-- | core/math/quat.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/core/math/quat.cpp b/core/math/quat.cpp index a9a21a1ba3..6f13e04027 100644 --- a/core/math/quat.cpp +++ b/core/math/quat.cpp @@ -55,10 +55,13 @@ Vector3 Quat::get_euler_yxz() const { } void Quat::operator*=(const Quat &p_q) { - x = w * p_q.x + x * p_q.w + y * p_q.z - z * p_q.y; - y = w * p_q.y + y * p_q.w + z * p_q.x - x * p_q.z; - z = w * p_q.z + z * p_q.w + x * p_q.y - y * p_q.x; + real_t xx = w * p_q.x + x * p_q.w + y * p_q.z - z * p_q.y; + real_t yy = w * p_q.y + y * p_q.w + z * p_q.x - x * p_q.z; + real_t zz = w * p_q.z + z * p_q.w + x * p_q.y - y * p_q.x; w = w * p_q.w - x * p_q.x - y * p_q.y - z * p_q.z; + x = xx; + y = yy; + z = zz; } Quat Quat::operator*(const Quat &p_q) const { |