概要
「四元数と3次元空間中の回転」の付録。
四元数の数学的な側面について説明します。
はっきり言って、画像処理の分野では不要な知識。 画像処理(主に 3D CG)の分野では、とりあえず、 「四元数とは、回転の軸と角度を表わすために使うデータの形式」 とだけ覚えておけば OK。
ここで話す内容は要するに、 「なんでそれを四元数と呼ぶんだろう」という疑問に答えるものです。
ちなみに、「ハミルトンの四元数体」の内容の焼き直しだったりします。 より深く理解するためには、 「群」、 「環」、 「体」などについて調べることをお勧めします。
その前に・・・ 複素数についておさらい
四元数の説明に入る前に、 少し複素数についておさらいしておきます。 簡単に言うと、複素数ってのは以下のようなものです。
実数に、 i2 = −1 となる元iを追加したもの。
実数上の2次元ベクトルともみなせる。
曲形式 α = r ( cosθ + i sinθ ) で表現できる。
複素数同士の掛け算で、2次元の回転を表現できる。
四則演算に関して閉じている。
で、四元数はこれと似た性質を持っています。 (というか、複素数をさらに拡張した数になっています。)
複素数に、虚数単位iに加えてさらに、 j2 = −1 となる元jを追加したもの。
すなわち、i, jと k = ij を使って、 a + i b + j c + k d と表わされる(a, b, c, dは実数)。
複素数上の2次元ベクトル、実数上の4次元ベクトルとみなせる。
回転軸となる単位ベクトル (x, y, z) と角度θを使って、 q = r ( sinθ, x cosθ, y cosθ, z cosθ ) と表現したりする。
四元数の掛け算を使って、3次元の回転を表現できる。
四則演算に関して閉じている。ただし、複素数と違って、積は非可換。
四元数
複素数は、実数に対して i = −1 となる数 i を付け足したもので、 2つの実数 a, b を使って a + i b と書ける数です。
これと同様に、今度は複素数に対して、 j = −1 となる数 j をさらに付け足したものが四元数(quaternion)です。 2つの複素数 α, β を使って、
ちなみに、 i, j, k の間には、以下のような関係が成り立ちます。
実部と虚部
複素数では実部が実数1つ、虚部も実数1つでしたが、 四元数では虚部が3つになっています。 この虚部の3つの実数は1セットで意味を持っていたりするので、 四元数、
また、ベクトル部が 0 ベクトルのとき、 四元数 ( x; 0 ) を実数と同一視し、 単に x で書き表します。
このような形式を用いることで、以下に述べるように、 加減乗除などの計算が簡単に書き表すことができます。
加減算
まず、四元数の加減算は非常に単純で、以下のようになります。
乗算
次に、乗算ですが、
複素数の場合と違って、 u × v の部分が非可換なので、 四元数の積は非可換になります。
共役と逆元
四元数 q = ( x; u ) に対して、 実数 √ を q の絶対値と呼び、 |q| で表します。
また、四元数 q = ( x; u ) に対して、 ( x; −u ) で表される四元数を、 共役な四元数と呼び、 q* で表します。 (あるいは、 と表したりもします。)
四元数 q とその共役四元数を掛け合わせると、
このことから、
| q* |
| |q| 2 |
| q* |
| |q| 2 |
| q* |
| |q| 2 |
四元数を使った回転
「3次元空間上の回転」で説明したように、 座標ベクトル u で表される点 A を、回転軸 p を中心に角度 θ 回転した点 A' の座標ベクトル u' は、以下のような計算で求めることができます。
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
| θ |
| 2 |
