ストリーミング四元数データを特定の量だけオフセットする必要があります。これを行うには、私は2の間の違いを得ることを計画し、その後、最初の2番目のオフセット。2つの座標系を較正するために2つの四元数の回転差を求める
私はトラブル2.
Using this converterの違いを見つけるのを持っています。
私はこのコードを実行している:私はresult
があることを期待する
public void convertQuat180()
{
Quaternion q = new Quaternion(0.65328f, 0.2706f, 0.65328f, -0.2706f); //45,180,0
Quaternion q180 = new Quaternion(0.70711f, 0, 0.70711f, 0); // 0,90,0
Quaternion result = q180 * Quaternion.Inverse(q);
Console.WriteLine(result);
}
:
(euler) diff = 45, 90 , 0
しかし、その代わりに、私は得る:
135,-180,0
私はここで間違っているつもりです
?
オイラー角を使ってこれを想像しても分かりません。差回転は、2つの回転元回転の差である角度をもっていない可能性が高いです。とにかく、上の公式で、あなたは 'result * q = q180'のような回転を得ます。これはあなたが望むものではありませんか? –
ok、おそらく私はテストするためにクワットに固執すべきです。私は彼らには新しいし、ユーラーを想像するのにははるかに簡単な時間を持っています!上記のコードは違いを見つけるのに有効ですか?そして、この違いを元のクオートにどのように適用すればよいですか? – anti
オイラー角の問題は、軸を互いに独立して見ることができないことです。このシナリオでは、四元数または回転行列を守る方が良い方法のようです。クォータニオンによって表される回転を簡単な乗算によって更新します(私の最初のコメントを参照)。もちろん、これで出発点に戻ります。 –