Google ClassroomGoogle Classroom
GeoGebraGeoGebra Classroom

同次座標を使って並進を行列のかけ算で表そう

このページはマス旅の一部です。 同次座標の仕組みを知ることで並進を行列の積で実現しよう。

1.同次座標は空間の串刺しだ

同次座標は空間の串刺しだ <同次座標と直線> 次元を1つふやして比例による串刺しで表す座標を同次座標といいます。 たとえば、 2次元の点A(a,b)は、1次元増やした点(a,b,1)と原点を通る直線t(a,b,1)=(ta,tb,t)を同一視します。 3次元の点A(a,b,c)は、1次元増やした点(a,b,c,1)と原点を通る直線t(a,b,c,1)と同一視します。 このとき、連比(ta:tb:t)=(a1:a2:t),(ta:tb:tc:t)=(a1:a2:a3:t)をもとの点Aの同次座標と言います。 同次座標を列ベクトルで表すと(a,b)=[a1,a2,1]t,(a,b,c)=[a1,a2,a3,1]tとかきます。 丸カッコが通常座標の列ベクトル、角カッコが同次座標の列ベクトルということです。 <平行移動の同次座標表示> たとえば、3次元の点A(a)をベクトルpだけ平行移動(並進)したときの点B(b)は ふつうならば、v+u=(a,b,c)+(u1,u2,u3)=(a+u1,b+u2,c+u3)と成分のたし算でかきます。 しかし、これを次元を1つつけたして同次座標でかくと、行列の積で表現できるのです。 今後ベクトルの積は内積だけなので、ドット記号などは省略します。 また、行列とベクトルの積も内積の多次元化と考えられるので、積記号は省略します。 そして、行列は{{行ベクトル}....{行ベクトル}}か{[列ベクトル]...[列ベクトル]} という表示をすることで、テキスト表示をします。 ただし、{E3,p}は3次の単位行列の右に列ベクトルをくっつけた3行4列の行列の断片(胞)を表します。 また、geogebraの流儀に合わせて、変数としてはベクトルは小文字で、行列は大文字とします。 脳内でtexに置き換えて読んでくださいb=a+p=(a+u1,b+u2,c+u3)=[a+u1,b+u2,c+u3,1]t   =[ta+tu1,tb+tu2,tc+tu3,t] =[a1+tu1,a2+tu2,a3+tu3,t] ={{1,0,0,u1},{0,1,0,u2},{0,0,1,u3},{0,0,0,1}}}[a1,a2,a3,t] ={{E3,p},{0,0,0,1}}[a1,a2,a3,t] =S a' つまり、点Aをベクトルpだけ平行移動した点Bの位置は 第4の座標tを適当に決めましょう。 3次の単位行列E3のとなりに移動列ベクトルpをくっつけて4行目に{0,0,0,1}をくっつけた行列Sを作る。 Sは3行4列の行列の断片の下に1行4列の行列の胞をくっつけたので、4行4列の行列、 4次の正方行列になりますね。 そして、Aの列ベクトルaをtを使って同次座標にしたa'にする。 Sとa'の積がBの同次座標になるので、それをさっきのtで割ってあげれば、最初の3つの成分がa+pの成分になるということですね。 課題:geogebraで空間内の点A(3,4,5)をp=(3,2,1)並進した点の位置を行列の積で求めよう。 タイトルは「並進をたし算ではなく、かけ算で求める」 A=(3,4,5) t=slider(-10,10,1) p=(3,2,1) #位置ベクトルとして表示されるので非表示 a=(3,4,5) #点Aをさします。 u=a+p #(6,6,6)の列ベクトルが表示されます。 ad={{3t},{4t},{5t},{t}) #ad=(3t,4t,5t,t)と入力すると4次元目が無視されます。 S={{1,0,0,x(p)},{0,1,0,y(p)},{0,0,1,z(p)},{0,0,0,1}} m1=S ad b1=Element(m1,1,1)/Element(m1,4,1) b2=Element(m1,2,1)/Element(m1,4,1) b3=Element(m1,3,1)/Element(m1,4,1) B=(b1,b2,b3) #点Bはベクトルuで指されます。 tを動かしてみましょう。特に変化はないですね。 でも t=0になった瞬間点Bが消えます。 なぜでしょうか。Bのもとになったm1を見てください。 同次座標は[列ベクトル]tで表されました。 だからオールゼロになっていますね。 これを復元しようとすると、点Bの座標であるb1,b2,b3を求めるときに、0による除算が起きます。 同次座標の空間にはオールゼロは許されないということですね。 言い換えると、 同次座標空間のオールゼロはあらゆる直線が通るため、方向すらない、空間全体を指すので「不定」です。これを通常座標に変換すると、0/0による除算でどの成分も「不定」、未定義になります。 同次座標空間の[x,y,z,0]は方向はあるけれど大きさが無限大だから「無限遠点」を表しますね。

並進をたし算ではなくかけ算で求める。

2.行列といえば、逆行列を考えたくなる

並進といえば後退を、 行列といえば逆行列を考えたくなるね。 さっきの例でいうと、 p=(3,2,1)の逆進はpr=-(3,2,1)だ。これを表す行列はpの部分がprにすればよいね。 bにprをたせば、もとのaに戻れるはずだ。 a=b+pr={{E3,pr},{0,0,0,1}}[a1,a2,a3,t] =Sr b' Sのベクトルpを逆ベクトルprにおきかえて作った行列Srは本当に逆行列になるのだろうか。 積S・Srが単位行列になればよいね。 S・Sr={{1,0,0,u1},{0,1,0,u2},{0,0,1,u3},{0,0,0,1}}{{1,0,0,-u1},{0,1,0,-u2},{0,0,1,-u3},{0,0,0,1}} ={{1,0,0,u1},{0,1,0,u2},{0,0,1,u3},{0,0,0,1}}{[1,0,0,0],{0,1,0,0},{0,0,1,0},[-u1,-u2,-u3,1]} ={ [{1,0,0,u1}(1),{0,1,0,u2}(1),{0,0,1,u3}(1),{0,0,0,1}(1)]. [{1,0,0,u1}(2),{0,1,0,u2}(2),{0,0,1,u3}(2),{0,0,0,1}(2)], [{1,0,0,u1}(3),{0,1,0,u2}(3),{0,0,1,u3}(3),{0,0,0,1}(3)}, [{1,0,0,u1}[-u1,-u2,-u3,1],{0,1,0,u2}[-u1,-u2,-u3,1],{0,0,1,u3}[-u1,-u2,-u3,1],{0,0,0,1}[-u1,-u2,-u3,1]] } ={[1,0,0,0],[0,1,0,0],[0,0,1,0], [-u1+u1,-u2+u2.-u3+u3,1]} =E4 単位行列になりますね。 もっと簡単に検証できないでしょうか? 胞体のままかけてみよう。 {0,0,0}=Oと行ベクトルの胞にします。綺麗に4胞×4胞になりすね。 pは列ベクトルのまま入れます。紛らわしので、ベクトルの先頭に行、列という文字をつけます。 サイズが3のときは、列ベクトル×行ベクトルは3×3行列になり、 行ベクトル×列ベクトルは内積でスカラーになることに注意しよう。 S Sr={{E,列p},{行O,1}}{{E,-列p},{行O,1}} ={{E,列p},{行O,1}}{[E,行O],[-列p,1]}  左上=EE+列p行O=E+3行3列O=E(3行3列) 左下=行OE+1*行O=行O+行O=行O(1行3列) 右上=E(-列p)+列p*1=-列p+列p=列O(1列3行) 右下=行O(-列p)+1*1=0+1=1(スカラー) だから S Sr={[E,行O],[列O,1]} =E4

3.変換と表現

<振り返り> ちなみに、「SやSrはアフィン変換をしている」という人がいます。 どういうことでしょうか。 これまでは、変換とその表現である行列をあまり区別せずに、コトバを使ってきた。 振り返りを兼ねて、コトバの使い方の視点で変換と表現をざっと見てみよう。 「合同」変換というのがあります。 図形を合同な図形に移すことだね。 平行移動(ずらす)、回転移動(まわす)、対称移動(うらがえす)の3種類があるね。 これらの合成も、証明するまでもなく合同変換だ。 また、 「相似」変換というものがあります。 図形の形を変えず相似な図形に移すことだ。 拡大縮小(向きを変えずにスクリーンに映す)、相似回転(等角らせん)、対称移動の3種類があり、この組み合わせも相似変換だ。 合同でも相似でもない「平行投影」というものがあります。 平行光線によって影を作ることに相当しますよ。 ガラス窓の影が床に移る、空間内の図形を平面や軸上に正射影するなどです。 辺の比は保存されます。平行も保存されます。 さて、2つの平面E,E'があり、Eの点P(x,y)をE'の点P'(x',y')に移す変換で、 x’=ax+by+k y'=cx+dy+l (ad-bc≠0) となるものをアフィン変換という。 これをベクトル行列方式で表すと x’=Ax+p(Aの行列式が非ゼロで、pが並進) x、x’が3次元ならば、Aは3次の正方行列になり、 y、y’が4次元ならば、Aは4次の正方行列になる。 a,b,c,dがどうであれ、Aが正則だから常識的な世界です。これがアフィン変換ですね。 また、 「射影」変換というものがありますね。 点光源によってスクリーンに影を作ることに相当しますね。 要するに、投影図法のことですね。 投影図では、直線は直線に移りますが、平行関係は維持できませんだから、辺の比もゆがみます。(複比は保存) しかし、だからこそ、平面図形の辺の比についての定理がからむおもしろい世界です。 さっきのアフィン空間に1つの点(無限遠点)をくっつけ射影空間を作ります。 これが、同次座標だったのです。 つまり、ゼロベクトル以外の点を分類した点を射影空間の点といい、その点のあつまりを射影空間というのです。ゼロベクトル自体は不定を表す。 さっき作った行列S,Srは4次の同次座標を同次座標に変換する線形変換でした。 これは、「形式的」には「射影変換」です。 しかし、「意味的」には、3次のアフィン空間の点を並進しているので、 「アフィン変換」を表す「表現」になっていますね。