2013-03-16 156 views
1

這裏有一點幫助。我從硬件陀螺儀接收每個軸1圈,總共3軸(x,y,z)旋轉3圈。當我使用基於矩陣的旋轉時,我可能會因爲乘法順序(RotX * RotY * RotZ <> RotY * RotX * RotZ)而產生奇怪的旋轉,我也嘗試了MatrixYawPitchRoll,但是出現了相同的效果。因此我得出結論,我應該使用四元數,但是我認爲我必須創建3個四元數,每次旋轉一個,但是當我將它們與乘法相結合時,我會得到與基於矩陣的旋轉相同的效果......所以,有人可以告訴我如何正確使用3次旋轉來創建和組合四元數,而不會出現以前的乘法效應?四元數三軸旋轉

P.S. D3DXQuaternionRotationYawPitchRoll仍然會受到與基於矩陣旋轉相同的效果。

+0

的問題,你的經驗被稱爲[萬向鎖(http://en.wikipedia.org/wiki/Gimbal_lock)。鏈接的維基百科頁面給出瞭如何使用四元數解決問題的詳細信息(我想DX中的函數首先將它們轉換爲矩陣,這會使四元數的屬性無效)。 – didierc 2013-03-16 01:52:15

+0

謝謝didierc您的評論我已經使用這些轉換...而據我瞭解,我認爲D3DX的準備功能只是這些包裝.. – ribben 2013-03-16 02:17:47

+0

@ribben:你在說什麼這些「乘法效應」關於? – 2013-03-16 02:48:46

回答

2

四元數不是一種可以沖走旋轉問題的神奇藥膏。所有四元數都是一種代表特定方向和進行方向轉換的廉價方式。

你的問題是,你不是代表你的方向作爲quaterion;你將它表示爲3個角度。 表示會導致您的輪換問題。

您需要停止使用角度。將對象的方向表示爲四元數。如果要調整方向,請從調整角度/軸創建四元數,然後將其乘以對象的方向。重新規範四元數,你就完成了。

+0

請給我一個背後的邏輯.... 我有3轉 例如, 第1步:創建四元數軸 第2步:....... – ribben 2013-03-16 02:16:04

+1

@ user1070700:您的問題***是***第1步。其實,您的問題是第0步。你做*不*有3旋轉;你有一個*方向*。只要你認爲你的方向爲「3輪」,你就會*繼續*出現這個問題。 – 2013-03-16 02:22:04

+0

好吧我是開放的頭腦,是所有的耳朵......但第0步是陀螺儀送我3輪...告訴我如何管理他們,使用四元數正確的旋轉 – ribben 2013-03-16 02:27:07