>100 Views
May 06, 22
スライド概要
四元数による回転の記述 | Mathlog
https://mathlog.info/articles/3197
四元数と回転 | ドクセル
https://www.docswell.com/s/usami-k/KQ8EJY-quaternion-rotation-tsudoi
https://usami-k.github.io/
四元数による回転の記述 宇佐見 公輔 2022 年 5 月 6 日 3 次元の回転変換を四元数で記述する方法を紹介します。なお、この内容は先日開催された第 3 回すうがく徒のつどいの「四元数と回転」で話した内容の一部です。その際の講演資料では計算を 省略しましたが、今回は計算も書きます。 1 四元数の定義 Definition 1.1 (四元数) 𝑥0 + 𝑥1 i + 𝑥2 j + 𝑥3 k(𝑥𝑖 ∈ ℝ)とあらわされる数を、四元数と呼びます。ここで、i、j、k は実数 とは異なる数であり、次の関係式を満たすものです。四元数の虚数単位と呼ばれます。 i2 = j2 = k2 = −1 ij = −ji = k, jk = −kj = i, ki = −ik = j 四元数の乗法は非可換である点に注意してください。実数と実数の積や実数と虚数との積は可換 です。しかし、虚数と虚数の積は可換とは限りません。 四元数 𝑥 = 𝑥0 + 𝑥1 i + 𝑥2 j + 𝑥3 k に対して、四元数 𝑥 を次で定義し、𝑥 の共役と呼びます。 𝑥 ∶= 𝑥0 − 𝑥1 i − 𝑥2 j − 𝑥3 k 四元数 𝑥 = 𝑥0 + 𝑥1 i + 𝑥2 j + 𝑥3 k に対して、実数 |𝑥| を次で定義し、𝑥 の大きさと呼びます。 |𝑥| ∶= √ 𝑥02 + 𝑥12 + 𝑥22 + 𝑥32 共役と大きさのあいだに次のような関係があります。これは実際に計算することで分かります。 この関係は後で計算に使います。 𝑥𝑥 = |𝑥|2 四元数 𝑥 = 𝑥0 + 𝑥1 i + 𝑥2 j + 𝑥3 k と 𝑦 = 𝑦0 + 𝑦1 i + 𝑦2 j + 𝑦3 k に対して、実数 ⟨𝑥|𝑦⟩ を次で定義し、𝑥 と 𝑦 の内積と呼びます。 ⟨𝑥|𝑦⟩ ∶= 𝑥0 𝑦0 + 𝑥1 𝑦1 + 𝑥2 𝑦2 + 𝑥3 𝑦3 1
共役と内積のあいだに次のような関係があります。これは実際に計算することで分かります。こ の関係は後で計算に使います。 𝑥𝑦 + 𝑦𝑥 = 2⟨𝑥|𝑦⟩ 2 四元数と 3 次元空間の対応 Definition 2.1 (純虚四元数) 実部を持たない四元数、すなわち次の形の四元数を純虚四元数と呼びます(𝑥𝑖 ∈ ℝ)。 𝑥1 i + 𝑥2 j + 𝑥3 k 純虚四元数と 3 次元ベクトル空間のベクトルを、次のように対応させます。 𝑥1 i + 𝑥2 j + 𝑥3 k ↔ (𝑥1 , 𝑥2 , 𝑥3 ) 純虚四元数 𝑥 = 𝑥1 i + 𝑥2 j + 𝑥3 k と 𝑦 = 𝑦1 i + 𝑦2 j + 𝑦3 k に対して、純虚四元数 𝑥 × 𝑦 を次で定義し、𝑥 と 𝑦 の外積と呼びます。 𝑥 × 𝑦 ∶= (𝑥2 𝑦3 − 𝑥3 𝑦2 )i + (𝑥3 𝑦1 − 𝑥1 𝑦3 )j + (𝑥1 𝑦2 − 𝑥2 𝑦1 )k これは 3 次元ベクトル空間の外積と対応しています。 純虚四元数 𝑥 と 𝑦 の積は内積と外積であらわすことができます。これは実際に計算することで 分かります。 𝑥𝑦 = −⟨𝑥|𝑦⟩ + 𝑥 × 𝑦 この関係から次が導けます。これは後で計算に使います。 𝑥𝑦 − 𝑦𝑥 = 2(𝑥 × 𝑦) 3 四元数による回転 四元数を使って、3 次元空間の回転を次のように記述できます。 Theorem 3.1 (四元数による回転) 大きさ 1 のベクトル 𝑛⃗ があるとします。点 𝑋 を 𝑛⃗ の周りに角 𝜃 だけ回転した点を 𝑋 ′ としま す。𝑋 の位置ベクトルに対応する純虚四元数を 𝑥、𝑋 ′ の位置ベクトルに対応する純虚四元数を 𝑥 ′ とするとき、次が成り立ちます。 𝑥′ = 𝑞𝑥𝑞 2
ただし、𝑞 は次の四元数です(𝑛 は 𝑛⃗ に対応する純虚四元数)。 𝑞 = cos 𝜃 𝜃 + (sin ) 𝑛 2 2 なお、𝑞 は大きさ 1 の四元数です。実際、𝑛 = 𝑛1 i + 𝑛2 j + 𝑛3 k とすると、次のようになります。 2 2 2 2 𝜃 𝜃 |𝑞| = (cos ) + (sin ) (𝑛12 + 𝑛22 + 𝑛32 ) 2 2 𝜃 𝜃 = (cos ) + (sin ) 2 2 =1 4 ロドリゲスの回転公式への帰着 「四元数による回転」の定理の証明ですが、実は「ロドリゲスの回転公式」に帰着できます。 𝑞𝑥𝑞 を計算すると、実は次のようになります。 𝑞𝑥𝑞 = (cos 𝜃)𝑥 + (1 − cos 𝜃)⟨𝑛|𝑥⟩𝑛 + sin 𝜃(𝑛 × 𝑥) この右辺を、四元数と 3 次元空間の対応を考えてベクトルの記述にすれば次のようになります。 ⃗ 𝑥⟩ ⃗ 𝑛⃗ + sin 𝜃(𝑛⃗ × 𝑥) ⃗ cos 𝜃 𝑥⃗ + (1 − cos 𝜃)⟨𝑛| これは、「ロドリゲスの回転公式」そのものです。したがって、「四元数による回転」の定理が証 明できます。 あとは、𝑞𝑥𝑞 の計算結果が確かに上述のとおりであることを示せば証明が完了します。 5 四元数による回転の証明 𝑞 の実部を 𝑞0 、虚部(純虚四元数部)を 𝑞1 とすると、次のように展開できます。 𝑞𝑥𝑞 = (𝑞0 + 𝑞1 )𝑥(𝑞0 − 𝑞1 ) = 𝑞0 𝑥𝑞0 + (𝑞1 𝑥𝑞0 − 𝑞0 𝑥𝑞1 ) − 𝑞1 𝑥𝑞1 これを、各項ごとに計算していきます。 𝑞0 𝑥𝑞0 の部分は次のようになります。 𝜃 𝜃 𝑞0 𝑥𝑞0 = (cos ) 𝑥 (cos ) 2 2 2 𝜃 = (cos ) 𝑥 2 3
𝑞1 𝑥𝑞0 − 𝑞0 𝑥𝑞1 の部分は次のように計算できます。 𝜃 𝜃 𝜃 𝜃 𝑞1 𝑥𝑞0 − 𝑞0 𝑥𝑞1 = (sin ) 𝑛𝑥 (cos ) − (cos ) 𝑥 (sin ) 𝑛 2 2 2 2 𝜃 𝜃 = (cos ) (sin ) (𝑛𝑥 − 𝑥𝑛) 2 2 𝜃 𝜃 = 2 (cos ) (sin ) (𝑛 × 𝑥) 2 2 = sin 𝜃(𝑛 × 𝑥) 途 中 で、純 虚 四 元 数 の 外 積 の 関 係 式 を 使 い ま し た。ま た、最 後 の 変 形 は 2 倍 角 の 公 式 sin 2𝜙 = 2 cos 𝜙 sin 𝜙 を使いました。 −𝑞1 𝑥𝑞1 の部分は次のようになります。 𝜃 𝜃 −𝑞1 𝑥𝑞1 = − (sin ) 𝑛𝑥 (sin ) 𝑛 2 2 2 𝜃 = − (sin ) 𝑛𝑥𝑛 2 ここで、四元数の内積の関係式から次が分かります。 2⟨𝑛|𝑥⟩𝑛 = (𝑛𝑥 + 𝑥𝑛)𝑛 = 𝑛𝑥𝑛 + 𝑥𝑛𝑛 = −𝑛𝑥𝑛 + 𝑥|𝑛|2 = −𝑛𝑥𝑛 + 𝑥 ここから、𝑛𝑥𝑛 = 𝑥 − 2⟨𝑛|𝑥⟩𝑛 が分かります。よって、次のようになります。 2 𝜃 −𝑞1 𝑥𝑞1 = − (sin ) (𝑥 − 2⟨𝑛|𝑥⟩𝑛) 2 以上から、𝑞𝑥𝑞 は次のようになります。 𝑞𝑥𝑞 = 𝑞0 𝑥𝑞0 + (𝑞1 𝑥𝑞0 − 𝑞0 𝑥𝑞1 ) − 𝑞1 𝑥𝑞1 2 2 𝜃 𝜃 = (cos ) 𝑥 + sin 𝜃(𝑛 × 𝑥) − (sin ) (𝑥 − 2⟨𝑛|𝑥⟩𝑛) 2 2 2 2 2 𝜃 𝜃 𝜃 = ((cos ) − (sin ) ) 𝑥 + 2 (sin ) ⟨𝑛|𝑥⟩𝑛 + sin 𝜃(𝑛 × 𝑥) 2 2 2 = (cos 𝜃)𝑥 + (1 − cos 𝜃)⟨𝑛|𝑥⟩𝑛 + sin 𝜃(𝑛 × 𝑥) ( ) 𝜃 2 最後の変形は 2 倍角の公式 cos 2𝜙 = (cos 𝜙)2 −(sin 𝜙)2 と半角の公式 sin = 2 1−cos 𝜃 2 を使いました。 これで、無事に四元数による回転の式をロドリゲスの回転公式に帰着させて証明できました。 4