[英]Directionality of movement along the surface of a sphere with quaternions
我正在使用配備陀螺儀/加速度計/磁力計的運動跟蹤設備。 該設備在任何時間點將其旋轉方向作為四元數輸出。
當我從原始方向旋轉設備時,我試圖計算兩件事:(1)球體表面與其原始方向的距離(我實際上已經完成了這一步),以及(2)方向方向 - 但方向需要是簡單的 1 或 -1,而不是向量。
讓我進一步解釋一下關於方向的含義:假設設備從初始旋轉 state 開始,然后沿一個方向旋轉。 完成一定量的旋轉后,我將其旋轉回原來的 position,然后我繼續沿着相同的軌跡旋轉它 - 基本上是在與我原來的旋轉方向相反的方向旋轉它。
所以,如果我有一個原始四元數 Q0,然后我有另一個四元數代表我的第一次旋轉 Q1,那么我想對任何未來的四元數Qn 說:
就像我說的,由於找到了這個有用的帖子,我已經解決了“距離”部分: https://math.stackexchange.com/questions/90081/quaternion-distance?newreg=f0fcab1eca8d4a4faaad1ea555d1cdf7
我還沒有解決方向部分。 以下帖子使我成為了其中的一部分:
但我的理解仍然不完整。 誰能幫助闡明我如何做到這一點? 謝謝!
我不知道你使用的四元數約定是左鏈還是右鏈,所以我會選擇一個例子。 假設 P1 是將您從 Q0 帶到 Q1 的四元數,如下所示:
P1 * Q0 = Q1
然后我們有
P1 = Q1 * Q0^-1
如果 P1 的 w 部分為負,則翻轉 P1 元素的所有符號,使 w 部分為正。
If P1w < 0
P1 = -P1
Endif
P1 的其余 x、y、z 部分則指向旋轉軸,因此我們可以將其用作“方向”。 稱這個向量 v1 = [P1x,P1y,P1z]
現在你有另一個四元數 Qn,你想看看它是否與 Q1 處於相同的旋轉“方向”。 首先以與我們上面相同的方式生成以下內容:
Pn = Qn * Q0^-1
必要時翻轉 Pn 的所有符號以確保 Pnw 為正。
形成向量 vn = [Pnx,Pny,Pnz]
如果 vn 與 v1 的“方向”相同,則旋轉方向相同。 否則是相反的方向。 IE,
If dot(v1,vn) > 0
Direction is the same
Else
Direction is opposite
Endif
當您涉及 0 或 180 度的旋轉,或者如果您的旋轉超過 180 度時,這一切都會崩潰,因此您可能需要特殊的邏輯來處理這些情況。 例如,如果 v1 或 vn 非常接近或相同 [0,0,0],你想要什么結果?
對於不同的四元數約定,您可能需要從 Q0 * P1 = Q1 開始並相應地進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.