幾何代数アプリで習う

>> GAViewer 0.85, created by Daniel Fontijne, 
Leo Dorst, Tim Bouma, University of Amsterdam; 
Stephen Mann, University of Waterloo.
Type 'help()' for help on console functions.
>> a = no
a = 1.00*no

    • Ctrlを押しながら右クリックでドラッグすると赤い点が動く
      • 動かす前は
>> a = no
a = 1.00*no
      • 動かした後は
>> a
ans = 0.01*e1 + 0.04*e2 + 0.03*e3 + 1.00*no + 0.00*ni
||
--位置について、何かしら5つの成分((e1,e2,e3),(no,n1))の線形和になっていることがわかる
--点をさらに3つ加えてみる
>||
b = c = d = no
>> b = c = d = no
d = 1.00*no
c = 1.00*no
b = 1.00*no
    • 画面上、点が重なって表示されるので何の変哲もないが、Ctrl 右クリック ドラッグすると、分離して4点になる
  • 多様体、r-blade
    • そこに
sphere = a^b^c^c
circle = a^b^c
    • とすると、4点を通る球、3点を通る円が定義されて、円の方は描かれる

    • 左クリックで全体がぐるぐる回る
    • ちなみにa^b^cは3つのウェッジ積
    • オブジェクトはツールバーのView -> Select objectで選べて、それを選ぶと左のパネルで「向き」の表示ができるようになる。下図はcircleとsphereとに向き表示をさせたもの。a^b^c^dとa^b^d^cとではウェッジ積を一ペア交換しているので「反対向き」になる

    • 直線と平面は、niを用いることで作れる。点a,b(,c)と無限遠点niとを通る円(球)がそれぞれ直線と平面である

dynamic{line = a^b^ni,},
dynamic{plane = a^b^c^ni,},
    • ここでいろいろな多様体の線形表現を見ておこう
      • 球は、4成分のウェッジ積の線形和
      • 円(直線)は3成分のウェッジ積の線形和
      • 線分は2成分のそれ
      • 点は1成分のそれ
>> sphere2 = a^b^d^c
sphere2 = -3.85*e1^e2^e3^no + -2.87*e1^e2^e3^ni + 0.38*e1^e2^no^ni + 2.27*e1^e3^no^ni + 0.09*e2^e3^no^ni
>> dynamic{ line = a^b^ni,},
line = 0.12*e1^e2^ni + -2.04*e1^no^ni + 1.60*e2^no^ni
>> dynamic{plane=a^b^c^ni,},
plane = -2.98*e1^e2^no^ni
>> ppair = a^b
ppair = 0.12*e1^e2 + -2.04*e1^no + 1.60*e2^no + -1.59*e1^ni + 1.19*e2^ni + 0.99*no^ni
>> d
ans = 0.09*e1 + -1.24*e2 + 1.29*e3 + 1.00*no + 1.60*ni
    • 幾何代数で言うところの bladeというのは、このウェッジ積で定義される多様体のこと。1-bladeは点、2-bladeは線分、3-bladeは円、4-bladeは球
  • 双対
    • 双対っていうのがあって、行ったり来たりできる
    • sphere1の双対をとってdsphere1とし、さらにその双対をとってddsphere1にしてある。ウェッジ積表現を比べるとsphere1とddsphere1とが符合違いで同じであることがわかる。符合がどなるかは(-1)^{\frac{n(n-1)}{2}}で決まる(nは次元)
>> sphere1 = a^b^c^d
sphere1 = 7.70*e1^e2^e3^no + 14.06*e1^e2^e3^ni + -1.56*e1^e2^no^ni + 1.03*e1^e3^no^ni + -2.04*e2^e3^no^ni
>> dsphere1 = dual(sphere1)
dsphere1 = -2.04*e1 + -1.03*e2 + -1.56*e3 + -7.70*no + 14.06*ni
>> ddsphere1 = dual(dsphere1)
ddsphere1 = -7.70*e1^e2^e3^no + -14.06*e1^e2^e3^ni + 1.56*e1^e2^no^ni + -1.03*e1^e3^no^ni + 2.04*e2^e3^no^ni
>> 
||
--多様体上の点である(に含まれる?)ということはa^sphere1 = 0で表される。aはsphere1上の点だが、fは違う。aがsphere1上の点であるとき、双対であるdsphere1との関係としては、[tex:a \cdot dsphere1=0]という関係でもある
>||
>> a ^ sphere1
ans = 0
>> f ^ sphere1
ans = -8.38*e1^e2^e3^no^ni
    • 2つの多様体の交わりは、dual(A \cap B) = dual(B) \wedge dual(A)という
      • 2つの球の交わりは円であるので、以下のようにできる(向きに注意。負号を付ける??)
x = dual(dual(sphere1) ^ dual(sphere2))
      • だらだらと長い表現になるが、2-bladeであることがわかる
dsp3 = 9.03*e1^e2^e3 + 1.41*e1^e2^no + 3.19*e1^e3^no + 11.83*e2^e3^no + 4.41*e1^e2^ni + 4.62*e1^e3^ni + 23.99*e2^e3^ni + -0.84*e1^no^ni + -2.03*e2^no^ni + 2.43*e3^no^ni
    • 特定の点を作るには
newpt = pt(e1 + 2 e2)
  • 5つの点
    • no,e1,e2,e3,niの5つの点がある。e1,e2,e3は3次元の正規直交基底でno,niはノルムが0という特別な点である。
    • 5津の点は相互に内積が0の関係であるのを原則とするが、no,niだけは自身のノルム0である代わりにno,ni同士の内積が-1となっている
  • 特徴
    • 標準化した二点の内積ユークリッド距離の-1/2倍→点自身の内積は距離が0だから0になる
    • 標準化は(射影空間に代表をとるようなこと)、自身のniと自身の内積で割ったものの符合を変えたもの
    • 内積が0になるとき、それらは相互に双対
    • なので、幾何オブジェクトがa\cdot b=0と表現できれば、aの双対表現がbになる
      • x\cdot a = x \cdot bはxが点a,bから等距離であることを表しているが、これを式変形するとx\cdot (a-b) = 0となり、これは、a,bから等距離である点の集まりの双対表現が(a-b)であることを意味する
      • x\cdot c = -\frac{1}{2}\rho^2はxが点cからの距離が\rhoであることを表し、xが標準化されていればx\cdot (c-\frac{1}{2}\rho^2 ni)=0となるから、cを中心とした円・球の双対表現が得られたことになる
      • ここで\frac{1}{2}\rho^2 nini * rho * rho /2と書けばこれは*を幾何積(geometric product)と呼ぶ演算に対応する
      • アプリでは*を書いても書かなくてもそのようにできる。これはnoを中心として半径3の球である
no - ni 3 3/2
no - ni * 3 * 3/2
  • Tangent blades(接線、接面)
    • 以下はbivector(2つのベクトル)で張られた接面。球のdualとe1で接する接面との交わりをundualizeして見せている
  • Free blades
    • 方向だけあって起点がないものも作れる
    • 以下は、二つの平行な平面の双対表現を介して2平行平面の交わりを出している。「交わらない」ので存在はしないが、方向成分はある平面であるという性質は持つので、free bivectorとして示される
  • dual ( no-ni/2)^(e1+ni))