From 884343783c6374a20b66e40557822d271a29e438 Mon Sep 17 00:00:00 2001 From: Kung-vr Date: Mon, 4 Mar 2019 01:39:33 +0900 Subject: [PATCH] Move quaternion functions to quaternion namespace --- build_scripts/qt/sources.pri | 2 +- src/{utils => quaternion}/quaternion.h | 15 +++++++-------- src/tabcontrollers/MoveCenterTabController.cpp | 18 +++++++++--------- 3 files changed, 17 insertions(+), 18 deletions(-) rename src/{utils => quaternion}/quaternion.h (81%) diff --git a/build_scripts/qt/sources.pri b/build_scripts/qt/sources.pri index da65131..8eadc31 100644 --- a/build_scripts/qt/sources.pri +++ b/build_scripts/qt/sources.pri @@ -31,7 +31,7 @@ HEADERS += src/overlaycontroller.h \ src/tabcontrollers/KeyboardInput.h \ src/utils/Matrix.h \ src/utils/ChaperoneUtils.h \ - src/utils/quaternion.h \ + src/quaternion/quaternion.h \ src/tabcontrollers/audiomanager/AudioManagerDummy.h \ src/tabcontrollers/keyboardinput/KeyboardInputDummy.h \ src/overlaycontroller/openvr_init.h \ diff --git a/src/utils/quaternion.h b/src/quaternion/quaternion.h similarity index 81% rename from src/utils/quaternion.h rename to src/quaternion/quaternion.h index f98825a..98e95b2 100644 --- a/src/utils/quaternion.h +++ b/src/quaternion/quaternion.h @@ -3,9 +3,9 @@ #include //#include -namespace utils +namespace quaternion { -inline vr::HmdQuaternion_t quaternionFromHmdMatrix34( vr::HmdMatrix34_t matrix ) +inline vr::HmdQuaternion_t fromHmdMatrix34( vr::HmdMatrix34_t matrix ) { vr::HmdQuaternion_t q; @@ -34,8 +34,8 @@ inline vr::HmdQuaternion_t quaternionFromHmdMatrix34( vr::HmdMatrix34_t matrix ) return q; } -inline vr::HmdQuaternion_t quaternionMultiply( const vr::HmdQuaternion_t& lhs, - const vr::HmdQuaternion_t& rhs ) +inline vr::HmdQuaternion_t multiply( const vr::HmdQuaternion_t& lhs, + const vr::HmdQuaternion_t& rhs ) { return { ( lhs.w * rhs.w ) - ( lhs.x * rhs.x ) - ( lhs.y * rhs.y ) - ( lhs.z * rhs.z ), @@ -47,8 +47,7 @@ inline vr::HmdQuaternion_t quaternionMultiply( const vr::HmdQuaternion_t& lhs, - ( lhs.y * rhs.x ) }; } -inline vr::HmdQuaternion_t - quaternionConjugate( const vr::HmdQuaternion_t& quat ) +inline vr::HmdQuaternion_t conjugate( const vr::HmdQuaternion_t& quat ) { return { quat.w, @@ -58,7 +57,7 @@ inline vr::HmdQuaternion_t }; } -inline double quaternionGetYaw( const vr::HmdQuaternion_t& quat ) +inline double getYaw( const vr::HmdQuaternion_t& quat ) { double yawResult = atan2( 2.0 * ( quat.y * quat.w + quat.x * quat.z ), @@ -66,4 +65,4 @@ inline double quaternionGetYaw( const vr::HmdQuaternion_t& quat ) return yawResult; } -} // namespace utils +} // namespace quaternion diff --git a/src/tabcontrollers/MoveCenterTabController.cpp b/src/tabcontrollers/MoveCenterTabController.cpp index a9ec313..dab029c 100644 --- a/src/tabcontrollers/MoveCenterTabController.cpp +++ b/src/tabcontrollers/MoveCenterTabController.cpp @@ -2,7 +2,7 @@ #include #include "../overlaycontroller.h" #include "../utils/Matrix.h" -#include "../utils/quaternion.h" +#include "../quaternion/quaternion.h" void rotateCoordinates( double coordinates[3], double angle ) { @@ -1259,7 +1259,7 @@ void MoveCenterTabController::updateHmdRotationCounter( utils::matMul33( hmdMatrixAbsolute, hmdMatrixRotMat, hmdMatrix ); // Convert pose matrix to quaternion - m_hmdQuaternion = utils::quaternionFromHmdMatrix34( hmdMatrixAbsolute ); + m_hmdQuaternion = quaternion::fromHmdMatrix34( hmdMatrixAbsolute ); // Get rotation change of hmd // Checking for invalid quaternion using < because == isn't guaranteed @@ -1271,11 +1271,11 @@ void MoveCenterTabController::updateHmdRotationCounter( } // Construct a quaternion representing difference between old // hmd pose and new hmd pose. - vr::HmdQuaternion_t hmdDiffQuaternion = utils::quaternionMultiply( - m_hmdQuaternion, utils::quaternionConjugate( m_lastHmdQuaternion ) ); + vr::HmdQuaternion_t hmdDiffQuaternion = quaternion::multiply( + m_hmdQuaternion, quaternion::conjugate( m_lastHmdQuaternion ) ); // Calculate yaw from quaternion. - double hmdYawDiff = utils::quaternionGetYaw( hmdDiffQuaternion ); + double hmdYawDiff = quaternion::getYaw( hmdDiffQuaternion ); // Apply yaw difference to m_hmdYawTotal. m_hmdYawTotal += hmdYawDiff; @@ -1428,7 +1428,7 @@ void MoveCenterTabController::updateHandTurn( utils::matMul33( handMatrixAbsolute, handMatrixRotMat, handMatrix ); // Convert pose matrix to quaternion - m_handQuaternion = utils::quaternionFromHmdMatrix34( handMatrixAbsolute ); + m_handQuaternion = quaternion::fromHmdMatrix34( handMatrixAbsolute ); if ( m_lastRotateHand == m_activeTurnHand ) { @@ -1444,12 +1444,12 @@ void MoveCenterTabController::updateHandTurn( { // Construct a quaternion representing difference // between old hand and new hand. - vr::HmdQuaternion_t handDiffQuaternion = utils::quaternionMultiply( + vr::HmdQuaternion_t handDiffQuaternion = quaternion::multiply( m_handQuaternion, - utils::quaternionConjugate( m_lastHandQuaternion ) ); + quaternion::conjugate( m_lastHandQuaternion ) ); // Calculate yaw from quaternion. - double handYawDiff = utils::quaternionGetYaw( handDiffQuaternion ); + double handYawDiff = quaternion::getYaw( handDiffQuaternion ); int newRotationAngleDeg = static_cast( round( handYawDiff * k_radiansToCentidegrees ) + m_rotation );