なぜ人々は四元数を使うのですか?


15

私はしばらくの間それらをブラックボックスとして使用していました、私は数学について学んでいるだけですが、この質問に対するいくつかの決定的な答えが欲しいのです。

これまでのところ、私が個人的に遭遇した唯一の利点は、2つの角度間でSLERPを実行できることです。ベクトルで同じ効果を得るには、非常にい回避策が必要です(本質的に0と2PIをリンクします)。


SLERPは、2つの角度間の補間だけではありません。マトリックスでも簡単に実行できます。2つの任意の方向の間を補間できます。これは、マトリックスを使用するとはるかに複雑になります。
カルマリオス

回答:


23

四元数は、いくつかの問題をエレガントに解決します。

  • それらは軸角度表現と同じくらいコンパクトです(4つのスカラー値)
  • 行列表現との間で簡単に変換されます
  • 補間は、特別なケーシングなしで開始角度から終了角度まで機能します
  • 彼らはジンバルロックを決して示さない

他の表現でこれらの問題を回避できますが、四元数はアルゴリズムの単純さとパフォーマンスに適しています。


1
これはまさに私が探していたものです!
サーヤカロット

@Kai Interpolation works from any start to end angle without special casing、実際には特別なケースがあります。それらが超球の同じ半球上にない場合、これは実際に考慮する必要がある特別なケースです。ターゲットに補間するのは常に2つの方向があり、選択したいからです正しいもの
マイクセンダー

2
@Kai- They never exhibit gimbal lockそれはまったく真実ではありません。彼らは、単に乗算することができq(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20)ます。確かに、ジンバルロックを回避するために使用できますが、マトリックス、軸角度なども同様です。したがって、それは四元数の固有の特性ではありません。実際、ほとんどの回転表現を使用してそれを行うことができますが、オイラー角を使用します。ここでの唯一の真のメッセージは「オイラーエングルはジンバルロックに苦しむ」ですが、クォータニオンだけでなく、他の多くの回転表現によっても利用できます。
マイクセンダー

四元数のパフォーマンスもすべての場合で一般的に優れているわけではありません。たとえば、四元数を使用するよりも3x3マトリックスを使用してベクトルを回転させる方が高速です。ここではそれについての興味深い論文です。
マイクセンダー

3

あなたが言及するSLERPの使用法は、四元数のより一般的な属性の特定のケースです。異なる回転値の間をスムーズに補間できます。

オイラー角の回転値を補間すると、奇妙な動きが得られますが、論理的には、軸角度の回転値を補間する方法はありません(同じ軸の周りの2つの異なる角度は別として)。


+1。(w1、alpha1)と(w2、alpha2)の間を補間するには、これらの角度軸表現をクォートに変換し、SLERPを使用します。もちろん、Bezier / de Casteljauスキーム/スプラインスキームを介してこのようなことを行い、キークォータニオンの「ポリゴン/セット」をこのような方法で使用して、複雑な回転を考え出すことができます。これはおそらく、SLERPとmultiSLERPまたはそれらのバリエーション(NLERP、SQUAD)が測地線/最短回転パス上にある中間の回転軸/角度のペアを作成するため、クォータニオンが他の表現よりも自然に行う唯一のものです。称賛。
テオドロン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.