2010-12-07 49 views
1

我正在使用WiiM +陀螺儀來計算旋轉。使用四元數來表示C中的陀螺儀角度#

我整合沿偏航,俯仰和翻滾軸轉的速率,並將其存儲在一個叫做angleSum

因此,對於每個讀矢量,angleSum(讀取)表示從初始的Y,p和r轉方向。

我然後使用四元數(其我與完全不熟悉)來表示這樣的:

Q = Quaternion.createfromyawPitchRoll(angleSum.yaw,angleSum.pitch,angleSum.roll *( - 1))

但是當我在一個方向上轉動我的90度並打印出qx,qy和qz轉彎時,所有的讀數都受到轉彎的影響(它們都顯示90度迴轉和後退, )

我的問題是非常基本的:我如何使用這個四元數結構來表示方向?就偏航,俯仰和俯仰而言,我需要一個絕對(或至少是相對)的方向。

謝謝!

回答

1

A quaternion是鬆散地定義爲繞定義的軸的軸和旋轉分量的四維結構(通常表示爲{x, y, z, w})。看看the method you've referenced,我會假設你在提供偏航,俯仰和滾動radians而不是度數。這將從表中刪除最常見的實現錯誤。

假設您的實施是正確的(似乎是),q.x,q.yq.z都會隨着任何輪換而發生變化。請記住,你正在定義一個四維對象;四元數一樣Euler angles.

如果您想喜歡以獲得更人性化的Euler標記讀出,考慮將你的四元數回偏航,俯仰和滾轉。 Here's a discussion在XNA中這樣做。

+0

感謝您的澄清。但是如果我將它轉換回歐拉角,那麼首先創建四元數的目的是什麼?我不對它進行任何操作(我的角度最初是度數,我轉換爲弧度並用於創建四元數) – Imelza 2010-12-07 05:58:30