簡體   English   中英

沿帶有四元數的球體表面的運動方向性

[英]Directionality of movement along the surface of a sphere with quaternions

我正在使用配備陀螺儀/加速度計/磁力計的運動跟蹤設備。 該設備在任何時間點將其旋轉方向作為四元數輸出。

當我從原始方向旋轉設備時,我試圖計算兩件事:(1)球體表面與其原始方向的距離(我實際上已經完成了這一步),以及(2)方向方向 - 但方向需要是簡單的 1 或 -1,而不是向量。

讓我進一步解釋一下關於方向的含義:假設設備從初始旋轉 state 開始,然后沿一個方向旋轉。 完成一定量的旋轉后,我將其旋轉回原來的 position,然后我繼續沿着相同的軌跡旋轉它 - 基本上是在與我原來的旋轉方向相反的方向旋轉它。

所以,如果我有一個原始四元數 Q0,然后我有另一個四元數代表我的第一次旋轉 Q1,那么我想對任何未來的四元數Qn 說:

  1. Qn 到 Q0 的距離是多少?
  2. Qn 從 Q0 的方向是什么(有效值為 1 或 -1)? 其中“1”是“與從 Q0 到 Q1 的旋轉方向相同”,“-1”是“與從 Q0 到 Q1 的旋轉方向相反”。

就像我說的,由於找到了這個有用的帖子,我已經解決了“距離”部分: https://math.stackexchange.com/questions/90081/quaternion-distance?newreg=f0fcab1eca8d4a4faaad1ea555d1cdf7

我還沒有解決方向部分。 以下帖子使我成為了其中的一部分:

  1. 兩個四元數的區別
  2. 兩個四元數之間的“差異”

但我的理解仍然不完整。 誰能幫助闡明我如何做到這一點? 謝謝!

我不知道你使用的四元數約定是左鏈還是右鏈,所以我會選擇一個例子。 假設 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM