同次座標系とグラスマン代数
グラスマン代数はそのままだと「原点を通るジオメトリ」しか扱えない
同次座標系は実際使う3次元では原点を通らなくて済み、同時座標では原点を通っているものが扱える
-> 同次座標系を使えば3次元上の任意の位置にあるジオメトリをグラスマン代数に使える!
Homogeneous Coordinate and Grassmann Algebra
Slide 20
Slide 20 text
幾何代数
Geometric Algebra
Slide 21
Slide 21 text
同次座標系
Homogeneous Coordinate System
Slide 22
Slide 22 text
同次座標系
3次元座標系 に対して、以下のような対応関係を
持つ4次元座標系のことを同次座標系と呼ぶ
N次元座標に対してもN+1次元の同時座標系を考えることが
できます
Homogeneous Coordinate System
(x, y, z)
(x, y, z) = (x, y, z, 1) = (wx, wy, wz, w)
Slide 23
Slide 23 text
同次座標系
同時座標系 はスカラー倍 しても、表す座標は
変化しない性質がある(同次性 Homogeneous)
幾何的には3次元の座標の点と原点を通る4次元の線を
対応付けている
Homogeneous Coordinate System
(x, y, z, w) k
k(wx, xy, wz, w) = (
,
,
, 1) =
kw
kx
kw
kwy
kw
kwz
(x, y, z, 1)
Slide 24
Slide 24 text
同次座標系の方向ベクトル
方向ベクトル について次のような対応付けを行う
これ自体はたぶん便利だったからそういう定義をしている
Direction Vector in Homogeneous Coordinate System
d = (d
, d
, d
)
x y z
(d
, d
, d
) =
x y z (d
, d
, d
, 0)
x y z
Slide 25
Slide 25 text
の同次座標の解釈
は定義不能では・・・?
3次元座標 を した点 を考える。こ
の同次座標は
と表すことができる。
w = 0
Interpretation for Homogeneous Coordinate w = 0
w = 0
(x, y, z) α (ax, ay, az)
(ax, ay, az) = (x, y, z,
)
a
1
Slide 26
Slide 26 text
の同次座標の解釈
ここで を無限大にすると・・・?
は無限遠方へ
同次座標系は へ
の同次座標は三次元座標の無限遠方点と対応付
けられている(としている)
位置ベクトルとは被らないので区別できて嬉しい
w = 0
Interpretation for Homogeneous Coordinate w = 0
α
(ax, ay, az) → (∞, ∞, ∞)
(x, y, z, 0)
w = 0
Slide 27
Slide 27 text
同次座標系とジオメトリの表現
Slide 28
Slide 28 text
直線の表現
直線を決めるには6次元の情報が必要
点 を通る直線(上の点) は任意のスカラー を使って以下の
ように表現できます
なので2点の位置座標で一つの直線を表すことは可能
6次元の座標で という感じに
Presentation for Line
p, q l t
l(t) = (q − p)t + p
(p
, p
, p
, q
, q
, q
)
x y z x y z
Slide 29
Slide 29 text
プリュッカー座標
陰関数的に表現することも可能、これをImplicit Formという
Implicit Fromをちょっと展開すると以下のように書ける
ここで と をそれぞれDirectionとMomentと呼び、このベクトルでも直線を定義することが可能である
この をまとめた座標 をプリュッカー座標とかみたいな感じで表せられる代数系のことを言います
ある一つの直線を表す座標
Plücker Coordinate
(q − p) × (l − p) = 0
(q − p) × l − q × p = 0
(q − p) −q × p
v × l + m = 0
v, m (v
, v
, v
, m
, m
, m
)
x y z x y z
Slide 30
Slide 30 text
プリュッカー座標
点 とプリュッカー座標の関係
プリュッカー座標 はどんな直線を
表している?
1. Moment に対して垂直な半径 の円に接する
直線の内
2. 右回りの方向でDirection に平行な直線
を表している
そういう表し方があるぐらいに留めてください
Plücker Coordinate
p, q
v
m
= (q
− p
, q
− p
, q
− p
)
x x y y z z
= (p
q
− p
q
, p
q
− p
q
, p
q
− p
q
)
y z z y z x x z x y y x
(1)
(2)
(v
, v
, v
, m
, m
, m
)
x y z x y z
m ∣m∣/∣v∣
v
Slide 31
Slide 31 text
プリュッカー座標
プリュッカー座標は同次性を持つ
, とスカラー倍しても、Implicit Formは変わらないので同じ直線を表す
同次座標系と相性がいい
Plücker Coordinate
km kv
km × l − kv = 0
k(m × l − v) = 0
m × l − v = 0
Slide 32
Slide 32 text
平面の表現
平面についても同様の話ができます。平面のImplicit Formは
平面の法線を として、高さを (スカラー)で表示できます
平面は法線の成分と によって で表現するこ
とができる
同様にこれは同次性を持ちます
(平面はむしろImplicit Formの方が知られている気がします)
Presentation for Plane
n h
n ⋅ g + h = 0
h (n
, n
, n
, h)
x y z
kn ⋅ g + kh = 0
k(n ⋅ g + h) = 0
n ⋅ g + h = 0
Slide 33
Slide 33 text
同次座標系の良さ
4次元にすると座標に対してさらに+情報が入れられるのでなかなか便利
位置ベクトルと方向ベクトルの区別がつく
同時座標から3次元座標の変換は一意的に行える
対応付けが明らかで楽
原点を通らない3次元のオブジェクトは同次座標では原点を通るようになる
グラスマン代数的には一番ありがたい
任意の位置にあるものが扱えるようになる!
Merit of Homogeneous Coordinate System
Slide 34
Slide 34 text
PGAチュートリアル
~Intersectionまで~
Slide 35
Slide 35 text
グラスマン代数のウェッジ積
グラスマン代数では 次元ベクトル に対してウェッジ積 という演算を定義します
外積の一種として扱われます
立ち位置としてはクロス積を任意の次元でも一般化したもの
Wedge Product in Glassmann Algebra
n a, b ∈ Rn ∧
∧ : R ×
n R →
n ∧ R
2 n
a ∧ b
Slide 36
Slide 36 text
グラスマン代数のウェッジ積
ウェッジ積によってできた はBivectorと呼びます。
Bivectorはベクトルではありません
新しい基底が作られたみたいなものと捉えてください
はこれ以上まとめられない
Wedge Product in Glassmann Algebra
a ∧ b
(a ∧ b ∈ ∧ R )
2 n
a + a ∧ b
Slide 37
Slide 37 text
ウェッジ積の性質
ウェッジ積は以下の性質を満たすものとして定義されています
結合則
分配則
スカラー
反可換性
Property of Wedge Product
(a ∧ b) ∧ c = a ∧ (b ∧ c)
(a + b) ∧ c = a ∧ c + b ∧ c, a ∧ (b + c) = a ∧ b + a ∧ c
s ∧ t = t ∧ s = st
s ∧ a = sa
a ∧ b = −b ∧ a
Slide 38
Slide 38 text
ウェッジ積の反可換性
反可換性(Anticommutativity)はウェッジ積で一番重要な性質
この性質より、自分自身とのウェッジ積は0になる。
Proof. に を代入したら出てくる
Anticommutativity of Wedge Product
a ∧ b = −b ∧ a
a ∧ a = 0
b a
a ∧ a
2a ∧ a
a ∧ a
= −a ∧ a
= 0
= 0
(3)
(4)
(5)
Slide 39
Slide 39 text
k-Vector
ウェッジ積はいくつもかけることができる(最大 回まで)
ウェッジ積をかけた回数に応じて、その結果はBivector, Trivector…と名前が付けられている
一般化して 回のウェッジ積を掛けたものはk-vectorと呼ぶ
k-vector は と表記できます
この時の をGradeと言います
スカラーは0-Vectorとみなします
k-vectorをいくつもまとめたものをMultivectorといいます
k-Vector
n
a ∧ b ∧ c ∧ d ∧ ...
k − 1
u u ∈ ∧ R
k n
k
s + a + b + c + a ∧ b + b ∧ c + c ∧ a + a ∧ b ∧ c
Slide 40
Slide 40 text
3次元座標で考えてみる
3次元座標系 について、各基底ベクトルを と表す
もう一つの座標 とウェッジ積をとってみる
Grasmann Algebra in 3D
p = (p
, p
, p
)
x y z e
, e
, e
1 2 3
p = p
e
+
x 1 p
e
+
y 2 p
e
z 3
q = (q
, q
, q
)
x y z
q = q
e
+
x 1
q
e
+
y 2
q
e
z 3
p ∧ q
Slide 41
Slide 41 text
3次元座標で考えてみる
先ほどのウェッジ積の性質を用いて、展開してあげると
Grasmann Algebra in 3D
p ∧ q = (p
e
+ p
e
+ p
e
) ∧ (q
e
+ q
e
+ q
e
)
x 1 y 2 z 3 x 1 y 2 z 3
= p
e
∧ e
+ p
p
e
∧ e
+ p
p
e
∧ e
x
2
1 1 y x 2 1 z x 3 1
+ p
p
e
∧ e
+ p
e
∧ e
+ p
p
e
∧ e
x y 1 2 y
2
2 2 z y 3 2
+ p
p
e ∧ e
+ p
p
e
∧ e
+ p
e
∧ e
x z 1 3 y z 2 3 z
2
3 3
(6)
(7)
(8)
(9)
Slide 42
Slide 42 text
3次元座標で考えてみる
同じベクトル同士は0になる性質を利用すると
Grasmann Algebra in 3D
p ∧ q = (p
e
+ p
e
+ p
e
) ∧ (q
e
+ q
e
+ q
e
)
x 1 y 2 z 3 x 1 y 2 z 3
= p
e
∧ e
+ p
p
e
∧ e
+ p
p
e
∧ e
x
2
1 1 y x 2 1 z x 3 1
+ p
p
e
∧ e
+ p
e
∧ e
+ p
p
e
∧ e
x y 1 2 y
2
2 2 z y 3 2
+ p
p
e ∧ e
+ p
p
e
∧ e
+ p
e
∧ e
x z 1 3 y z 2 3 z
2
3 3
(10)
(11)
(12)
(13)
Slide 43
Slide 43 text
3次元座標で考えてみる
同じベクトル同士は0になる性質を利用すると
Grasmann Algebra in 3D
p ∧ q = (p
e
+ p
e
+ p
e
) ∧ (q
e
+ q
e
+ q
e
)
x 1 y 2 z 3 x 1 y 2 z 3
= p
p
e
∧ e
+ p
p
e
∧ e
y x 2 1 z x 3 1
+ p
p
e
∧ e
+ p
p
e
∧ e
x y 1 2 z y 3 2
+ p
p
e ∧ e
+ p
p
e
∧ e
x z 1 3 y z 2 3
(14)
(15)
(16)
(17)
Slide 44
Slide 44 text
3次元座標で考えてみる
反可換性 を使う
Grasmann Algebra in 3D
a ∧ b = −b ∧ a
p ∧ q = (p
e
+ p
e
+ p
e
) ∧ (q
e
+ q
e
+ q
e
)
x 1 y 2 z 3 x 1 y 2 z 3
= p
p
e
∧ e
+ p
p
e
∧ e
y x 2 1 z x 3 1
+ p
p
e
∧ e
+ p
p
e
∧ e
x y 1 2 z y 3 2
+ p
p
e ∧ e
+ p
p
e
∧ e
x z 1 3 y z 2 3
(18)
(19)
(20)
(21)
Slide 45
Slide 45 text
3次元座標で考えてみる
まとめるとこうなる
各係数がクロス積の各成分と一致している
ウェッジ積はクロス積的な性質を持っていることがわかる(外積)
Grasmann Algebra in 3D
p ∧ q = (p
q
−
y z p
q
)e
∧
z y 2 e
+
3 (p
q
−
z x p
q
)e
∧
x z 3 e
+
1 (p
q
−
x y p
q
)e
∧
y x 1 e
2
Slide 46
Slide 46 text
3次元座標で考えてみる
さらにここに をさらにかけるとTri-Vectorが得られる (計算は省略します)
Trivectorの係数はスカラー三重積 の値になる
k-vectorは1つにまとめられる(同じ基底の組み合わせは消えるので)
Grasmann Algebra in 3D
r = (r
, r
, r
)
x y z
p ∧ q ∧ r = det((p, q, r))e
∧
1 e
∧
2 e
3
p ⋅ (q × r)
Slide 47
Slide 47 text
任意次元のk-vector
各基底のウェッジ積を のように添え字で省略します
先ほどの例を見ると3次元座標系ではk-vectorは次のように得られました
s (スカラー)
k-vectorの数はそれぞれのGradeよって変わる
k-vector in Arbitrary Dimension
e
∧
1 e
=
2 e
12
e
, e
, e
1 2 3
e
, e
, e
23 31 12
e
123
Slide 48
Slide 48 text
任意次元のk-vector
自分自身を含まない
順番は変えられる(符号の反転はあるが)
ので、 次元座標に置けるk-vectorの数は組み合わせ で表される
3次元 : 1, 3, 3, 1
4次元 : 1, 4, 6, 4, 1
…
最終的に次元数 のグレードを持つn-Vectorにまとまっていく
次元数 以上のk-vectorは作れない(どうあがいても基底が被るので)
k-vector in Arbitrary Dimension
n
C
n k
n
n
幾何的な対応
試しに4次元同次座標
にある2つの点 についてウェッジ積を取ってみます
計算してみるとこんな感じになります(計算は3次元と同様です)
Geometric Correspondence
(p
, p
, p
, p
)、(q
, q
, q
, q
)
x y z w x y z z
p, q
p ∧ q = (q
p
− p
q
)e
+ (q
p
− p
q
)e
+ (q
p
− p
q
)e
x w x w 41 y w y w 42 z w z w 43
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
y z z y 23 z x x z 31 x y y x 12
(22)
(23)
Slide 51
Slide 51 text
幾何的な対応
ここで3次元( )に投影してみると・・・?
Geometric Correspondence
w = 1
p ∧ q = (q
− p
)e
+ (q
− p
)e
+ (q
− p
)e
x x 41 y y 42 z z 43
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
y z z y 23 z x x z 31 x y y x 12
(24)
(25)
Slide 52
Slide 52 text
おや・・・・?
Slide 53
Slide 53 text
幾何的な対応
ウェッジ積の結果
点を を通るプリュッカー座標
Geometric Correspondence
p ∧ q = (q
− p
)e
+ (q
− p
)e
+ (q
− p
)e
x x 41 y y 42 z z 43
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
y z z y 23 z x x z 31 x y y x 12
(26)
(27)
p, q
v
m
= (q
− p
, q
− p
, q
− p
)
x x y y z z
= (p
q
− p
q
, p
q
− p
q
, p
q
− p
q
)
y z z y z x x z x y y x
(28)
(29)
Slide 54
Slide 54 text
幾何的な対応
ウェッジ積の結果
点を を通るプリュッカー座標
各Bi-Vectorの係数は点 , を通る直線のプリュッカー座標と一致している
Geometric Correspondence
p ∧ q = (q
− p
)e
+ (q
− p
)e
+ (q
− p
)e
x x 41 y y 42 z z 43
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
+ (p
q
− p
q
)e
y z z y 23 z x x z 31 x y y x 12
(30)
(31)
p, q
v
m
= (q
− p
, q
− p
, q
− p
)
x x y y z z
= (p
q
− p
q
, p
q
− p
q
, p
q
− p
q
)
y z z y z x x z x y y x
(32)
(33)
p q
Slide 55
Slide 55 text
幾何的な対応
つまり は点 , を通る直線の情報を持っている!
Geometric Correspondence
p ∧ q p q
Slide 56
Slide 56 text
幾何的な対応
ではさらに点 を追加すると・・・?
これは点 を含む平面の座標と一致する!(詳しくは
Appendix参照)
Geometric Correspondence
r
p ∧ q ∧ r = l ∧ r = (v
r
− v
r
+ m
)e
y z z y x 234
+ (v
p
− v
p
+ m
)e
z x x z y 341
+ (v
p
− v
p
+ m
)e
x y y x z 241
− (m
p
+ m
p
+ m
p
)e
x x y y z z 123
p, q, r
補数
k-vector に対して、ウェッジ積をとると最大のグレードのn-vectorになる を の補数 Complementと呼びます
ただし、ウェッジ積は反交換則を持つので補数も左右を考える必要がある (符号が違うぐらいなので本質は変わらない)
Complement
u u u
u ∧ =
u e
123...n
u ∧ =
u e
:
123...n
右補数
∧
u u = e
:
123...n
左補数
Slide 60
Slide 60 text
4次元同次座標系での補数
最大のグレードを持つk-Vectorはアンチスカラーと呼び と表記します
足りてない基底を組み合わせたk-ectorが補数となる
Example
Complement in 4D Homogeneous Coordinate
I
e
=
1234 I
=
e
1 e
234
=
e
23 e
14
=
e
123 e
4
=
e
1234
1
アンチウェッジ積
ウェッジ積に対して、対となるような演算アンチウェッジ積というのが定義される
Example
Antiwedge Product
a ∨ b =
∧
a b
e
∨
1234 e
=
1 e
1
e
∨
321
e
=
42
e
2
e
∨
412 e
=
321 e
12
e
∨
1 e
=
423 1
Slide 63
Slide 63 text
アンチウェッジ積は何を表すか?
ウェッジ積とアンチウェッジ積はドモルガンの法則のような関係がある
(雑に考えて)集合で例えれば
補数は補集合
ウェッジ積は和集合
アンチウェッジ積は積集合
What Antiwedge Product represent?
=
a ∨ b ∧
a b
=
a ∧ b ∨
a b
Slide 64
Slide 64 text
アンチウェッジ積は何を表すか?
定義の式を分解して考える。例として平面 と直線 のアンチウェッジ積の結果はどうなるか?
は点、 は線を表す
の結果は平面
は点
何らかの点を返す演算となっている
What Antiwedge Product represent?
g l
g ∨ l =
∧
g l
g l
∧
g l
∧
g l
Slide 65
Slide 65 text
アンチウェッジ積は何を表すか?
アンチウェッジ積の集合的な性質を考えると出てきたものは平面と直線の積集合的な性質を持つジオメトリと推測
「アンチウェッジ積は2つのジオメトリの共通部分のジオメトリを抜き出す演算」
What Antiwedge Product represent?
Slide 66
Slide 66 text
平面と直線のアンチウェッジ積の結果は何?
そういうことで、平面 と直線 のアンチウェッジ積のアンチウェッジ
積について実際に計算すると
この点 が表す座標は平面 と直線 の衝突点の座標に一致
する
アンチウェッジ積はIntersectionを表現できる!
What’s Result of Antiwedge Product between Plane and Line?
g l
p = g ∨ l
g ∨ l = (m
n
− m
n
+ v
h)e
y z z y x 1
+ (m
n
− m
n
+ v
h)e
z x x z y 2
+ (m
n
− m
n
+ v
h)e
x y y x z 3
− (v
g
+ v
g
+ v
h)e
x x y y z 4
(34)
(35)
(36)
(37)
p g l
Slide 67
Slide 67 text
平面同士でのアンチウェッジ積は?
他にも…
平面 のアンチウェッジ積はPlane同士の交線 が
現れる
確かに「アンチウェッジ積は2つのジオメトリの共通部分のジオメ
トリを抜き出す演算」であることがわかる
What’s Result of Antiwedge Product between Plane and other Plane?
g
, g
1 2 l
g
∨
1 g
=
2 l
おわり
ここまでの話はほんの一端(教科書の1割も行っていない)
更に様々な幾何的な変換を一般化していく
大変だが知ってみるとなんだか面白いのでやってみて下さい
数学的な理解が深まったので勉強としてはいいかも
C++ライブラリが公開されている
https://github.com/EricLengyel/Terathon-Math-
Library
End
Slide 71
Slide 71 text
参考資料
Projective Geometric Algebra
Projective Geometric Algebra Illumination, Eric Lengyel
Geometric Algebra for Computer Science, Leo Dorst, Daniel Fontijne, Stephen Mann
A HISTROY OF VECTOR ANALYSIS, Michael J. Crowe
幾何学と代数系, 金谷健一 著
古典力学の形成, 山本義隆 著
四元数の発見, 矢野忠 著
Reference
Slide 72
Slide 72 text
Appendix
Slide 73
Slide 73 text
直線と点を含む平面
3点 を含む平面の法線 は次のように表示される
また、高さ については を使えば
Plane including Line and Point
p, q, r n
n = (q − p) × (r − p) = (q − p) × r − q × p
h n
h = −n ⋅ r
Slide 74
Slide 74 text
直線と点を含む平面
ここで を通る直線 のプリュッカー座標( )を用いると法線は
と書き換えることができる。また、高さについては
という形で、直線 と点 の座標によって表示することができる。
はこの結果の成分を全て係数として持っていることが分解すれば分かる。
Plane including Line and Point
p, q l m, v
n = v × r + m
h = −(v × r + m) ⋅ r = −m ⋅ r
l r
l ∧ r