From 907fdd26fc46bdf3027c2075364e5281b6c6badc Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Mon, 19 Oct 2020 16:34:00 -0500 Subject: [PATCH] WiimoteEmu: Use quaternions for orientation. --- Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp | 11 ++++++----- Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp index 3bc2fe0b63..b492b3bc14 100644 --- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp @@ -734,10 +734,10 @@ Common::Matrix44 Wiimote::GetTransformation(const Common::Matrix33& extra_rotati Common::Matrix44::Translate(-m_swing_state.position - m_point_state.position); } -Common::Matrix33 Wiimote::GetOrientation() const +Common::Quaternion Wiimote::GetOrientation() const { - return Common::Matrix33::RotateZ(float(MathUtil::TAU / -4 * IsSideways())) * - Common::Matrix33::RotateX(float(MathUtil::TAU / 4 * IsUpright())); + return Common::Quaternion::RotateZ(float(MathUtil::TAU / -4 * IsSideways())) * + Common::Quaternion::RotateX(float(MathUtil::TAU / 4 * IsUpright())); } Common::Vec3 Wiimote::GetTotalAcceleration() const @@ -758,8 +758,9 @@ Common::Vec3 Wiimote::GetTotalAngularVelocity() const Common::Matrix44 Wiimote::GetTotalTransformation() const { - return GetTransformation(Common::Matrix33::FromQuaternion(m_imu_cursor_state.rotation) * - Common::Matrix33::RotateX(m_imu_cursor_state.recentered_pitch)); + return GetTransformation(Common::Matrix33::FromQuaternion( + m_imu_cursor_state.rotation * + Common::Quaternion::RotateX(m_imu_cursor_state.recentered_pitch))); } } // namespace WiimoteEmu diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h index a01d4c545f..fac1dc6d31 100644 --- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h +++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h @@ -162,7 +162,7 @@ private: GetTransformation(const Common::Matrix33& extra_rotation = Common::Matrix33::Identity()) const; // Returns the world rotation from the effects of sideways/upright settings. - Common::Matrix33 GetOrientation() const; + Common::Quaternion GetOrientation() const; Common::Vec3 GetTotalAcceleration() const; Common::Vec3 GetTotalAngularVelocity() const;