[b][size=150]<アフィンの思い起こし>[/size][/b][br][br]アフィン平面は有限体Fq={0,1,..,q-1}の直積で[b]q^2個の点[/b]があり、[br][b]q×(q+1)本の直線[/b]が引けました。[br]y軸以外で原点を通るy=mxの傾きmを0~q-1のq通り変えられる。[br]次に、y=mx+cのcを[b]0からq-1まで[/b]変えることで[b]q本[/b]ずつの平行線の束ができた。[br]1つの束がラテン方陣1つに対応した。[br]y軸も入れると[b]傾きはq+1通り[/b]ある。[br][br][b][size=150]<射影は点線が双対>[br][/size][/b][br]傾きの違いも入れると、無限遠点は区別できることが[br]射影空間の原点が不定であることとのちがいだった。[br]このアフィン平面を射影空間に拡張するとどうなるだろう。[br][b]q^2個の点[/b]に、[b]直線の向きq+1通りのそれぞに無限遠点[/b]が追加されて、[br][color=#0000ff]点の数は[b]q^2+q+1[/b]個[/color]になるね。[br]では、直線はどうなるだろうか。[br]アフィンでは、q(q+1)=q^2+q(本)だった。[br]しかし、無限遠点を通るだけをつなぐ1本の直線が追加されて、[br][color=#0000ff]直線の数は[b]q^2+q+1[/b]本[/color]だ。[br]おもしろいね。[br][b]点と直線が数の上では対等[/b]になった。[br][br]たとえば、[br][b]F2={0,1}を土台にした射影空間[/b]はどうなるだろう。[br]2(2+1)+1=7。[br][b]点も直線も7ピッタ[/b]になる。[br][br]もとのアフィンでは [br]p0(0,0),p1(0,1),p2(1,0),p3(1,1)の[b]4点[/b][br]L01:0y-x=0(mod 2) {(0,0),(0,1)}[br]L02:y-0x=0(mod 2) {(0,0),(1,0)}[br]L03:y-1x=0(mod 2) {(0,0),(1,1)}[br]L23:0y-x=1(mod 2) {(1,0),(1,1)}[br]L13:y-0x=1(mod 2) {(0,1),(1,1)}[br]L12:2y-1x=1(mod 2) {(0,1),(1,0)}の[b]6本[/b][br][br]これが射影では[br]p0[0,0,1],p1[0,1,1],p2[1,0,1],p3[1,1,1]に、[br][b]無限遠点が3点(p1∞[0,1,0],p2∞[1,0,0],p3∞[1,1,0])[/b]追加されて[b]7点[/b]となる。[br][br]L01:0y-x=0(mod 2) {[0,0,1],[0,1,1],[0,1,0]}[br]L02:y-0x=0(mod 2) {[0,0,1],[1,0,1],[1,0,0]}[br]L03:y-1x=0(mod 2) {[0,0,1],[1,1,1],[1,1,0]}[br]L23:0y-x=1(mod 2) {[1,0,1],[1,1,1],[0,1,0]}[br]L13:y-0x=1(mod 2) {[0,1,1],[1,1,1],[1,0,0]}[br]L12:y-1x=1(mod 2){[0,1,1],[1,0,1],[1,1,0]}の6本の他に[br][b]L∞: {[0,1,0],[1,0,0],[1,1,0]}[/b]があり[b]7本[/b]となる。[br][br]アフィン平面では[br]異なる2つの点を通る共通線は[b]1本[/b]だけある。[br]異なる2つの線を通る共通点は[b]0か1個[/b]。[br][br]射影空間ではどうだろう。[br][b][color=#0000ff]異なる2つの点を通る共通線は1本だけある。[br][/color][/b]L01とL23は無限遠点[0,1,0]で交わるため平行線はない。[br][b][color=#0000ff]異なる2つの線を通る共通点は1個だけある。[br][/color][/b][br]平行だと思っていたものが交わるということは異様に見えるが、[br]日常の景色でも鉄道のレールが遠くの方で交わって見えたりするし、[br]透視図法では平行線はなく、平行に見えるのは遠くが画面に入らないだけ。[br]それに、むしろ、個数だけでなく、[br][b][color=#0000ff]「直線と点のコトバを入れ替えても成り立ってしまう」[/color][/b][br]という、美しい双対性に気づくでしょう。[br][br]そう考えると、日常見える景色の構造を美しく抜き出したともいえる。[br]これが「[b]射影[/b]」空間だ。
[size=150][b][br]<同次座標は点と直線の両方にある>[/b][/size][br][br]アフィン平面に無限遠点をくっつけただけだから[br]、平面といえば[b][color=#ff0000]平面だけど、次元が3になるので、なんとなく、射影「空間」と言ってきた[/color][/b]。[br]しかし、通常は[b]射影「平面」[/b]という。[br][br]なぜか。[br]次元が3に増えたとはいっても、3次元空間R ^3(または F_q^3)における原点を通る1次元直線を射影平面の「点」とみなし、原点を通る2次元平面を射影平面の「直線」とみなしているからですね。[br]つまり、「[color=#0000ff][b]3次元射影平面PG(2)[/b][/color][b]」[/b]は[br][b]3次元ではあっても意味的には平面、[br]「表示は3次元で、自由度は2次元」[br][/b]なのですね。[br][br][b]アフィン平面の点X(x1,x2)に[br][color=#0000ff][size=200]無限遠点を追加して[br]X=[x1,x2,1]t=[p1,p2,p3](連比p1:p2:p3)[br][/size][/color][br][/b]p3=t,p1=x1t,p2=x2tのように、3つの次元を対等にかく。ふつうは「,」ではなく「:」で区切る。[br]tが0以外で自由に変化できるため、[b][color=#0000ff][size=150]「同次座標は、座標というよりは連比でしかない」[/size][/color][/b]が、[br]角カッコで閉じることで、[b]普通の数値ではなく比である[/b]ことをアピールすることにします。[br][br]同じように、アフィン平面では、直線の式をy=mx+cとか、ax+by+c=0とかいてきたけれど、[br][b][color=#0000ff][size=150]射影平面の直線の式は、「ax1+bx2+cx3=0」[br][/size][/color][/b]のように3つの次元を対等にかく。[br][size=200][b][color=#0000ff]ax1+bx2+cx3=0。[br][/color][/b][/size]これはベクトルn=[a,b,c]とベクトルX=[x1,x2,x3]の内積がゼロであるという式だともいえる。[br]ただし、nはゼロベクトルではない。[br]このとき、[b]n=[a,b,c]を直線の同次座標[/b]という。[br][br][b][size=150]<内積での双対性>[br][/size][/b]さて、[br]点X=[x1,x2,x3]に直線x=[x1,x2,x3]を対応させ、[br]直線n=[a,b,c]に点N=[a,b,c]を対応させるとき、[br][br]「点Xが直線n上にある条件」と、「直線xが点Nを通る条件」が[br]同じax1+bx2+cx3=0、つまり、「[b][color=#0000ff]点と直線のベクトルの内積=0[/color][/b]」[br]で表すことができる。[br][br]さっきのF2={[0],[1]}(mod 2)からの[br]射影平面PG(2,q)の直線の式を同次座標でかいてみよう。[br]L01:1x+0y+0z=0 {[0,0,1],[0,1,1],[0,1,0]}[br]L02:0x+1y+0z=0 {[0,0,1],[1,0,1],[1,0,0]}[br]L03:1x+1y+0z=0 {[0,0,1],[1,1,1],[1,1,0]}[br]L23:1x+0y+1z=0 {[1,0,1],[1,1,1],[0,1,0]}[br]L13:0x+1y+1z=0 {[0,1,1],[1,1,1],[1,0,0]}[br]L12:1x+1y+1z=0 {[0,1,1],[1,0,1],[1,1,0]}[br]L∞:0x+0y+1z=0 {[0,1,0],[1,0,0],[1,1,0]}の7本の式ができるね。[br]3つの次元が対等になり、見た目も扱いやすさもシンプルになるね。
[b][size=150]<外積でも双対性>[/size][/b][br][br]点Pが2直線L1、L2の交点だとしたら、[br]点PがL1と直交し、点PがL2と直交します。[br]言い換えると、PはL1とL2と直交するベクトルです。[br]2つのベクトルに直交するベクトルは外積で求められました。[br]だから、[br][b]P=L1×L2[/b]ですね。[br][br]また、[br]直線Lが2点P1、P2を通るとしたら、[br]LとP1が直交し、LとP2が直交します。[br]2つのベクトルに直交するベクトルは外積で求められますから、[br][b]L=P1×P2[/b]です。[br][br]外積でも点と直線が入れ替えられましたね。[br]おもしろいですね。[br]面白い以上の成果があります。[br][br]2つの3次元ベクトルP=[p,q,r],S=[s,t,u]の[br][b]外積P×S=[br][det({{q,r},{t,u}}),-det({p,r},{s,u}),det({p,q},{s,t}})[br][/b]で計算できたから、[br]2点P,Sを通る直線の[b]法線ベクトル=P×S=(a,b,c)[/b]を求めて、[br]直線の方程式ax+by+cz=0が出せるということです。[br]逆に、2直線P,Sの[b]交点P×S=(a,b,c)[/b]を求めることができます。[br][br]ちょっと確かめてみましょう。[br]F2ベースのPG(2,2)の7点[br]p0[0,0,1],p1[0,1,1],p2[1,0,1],p3[1,1,1],[br]p1∞[0,1,0],p2∞[1,0,0],p3∞[1,1,0]と7直線、[br]L01:1x+0y+0z=0 {[0,0,1],[0,1,1],[0,1,0]}[br]L02:0x+1y+0z=0 {[0,0,1],[1,0,1],[1,0,0]}[br]L03:1x+1y+0z=0 {[0,0,1],[1,1,1],[1,1,0]}[br]L23:1x+0y+1z=0 {[1,0,1],[1,1,1],[0,1,0]}[br]L13:0x+1y+1z=0 {[0,1,1],[1,1,1],[1,0,0]}[br]L12:1x+1y+1z=0 {[0,1,1],[1,0,1],[1,1,0]}[br]L∞:0x+0y+1z=0 {[0,1,0],[1,0,0],[1,1,0]}の7本[br][br][b][color=#0000ff]L01[1,0,0]とL23[1,0,1]の交点は[br][1,0,0]×[1,0,1]=[0,1,0]の無限遠点になります。[br]p1∞[0,1,0]とp2∞[1,0,0]の共線は[br][0,1,0]×[1,0,0]=[0,0,1]で、0x+0y+1zになります。[br][br][/color][/b]さっきの推理が外積計算で検証されましたね。[br][br][b][size=150]<振り返り>[/size][/b][br][br][color=#9900ff][b][u][size=150]課題:geogebraのベクトルの外積を使って交点、共線を求めよう。[br][/size][/u][/b][/color][br]geogebraのマニュアルによると、ベクトルどうしリストどうしの外積ができるそうです。コマンドはクロスです。[br]タイトルは「同次座標の外積で交点、共線」[br]p0={0,0,1}[br]p1={0,1,1}[br]p2={1,0,1}[br]p3={1,1,1}[br]p1i={0,1,0}[br]p2i={1,0,0}[br]p3i={1,1,0}[br]text1="p0="+p0+", p1="+p1+",p2="+p2+",p3="+p3+",p1i="+p1i+",p2i="+p2i+",p3i="+p3i+""[br]l01={1,0,0}[br]l02={0,1,0}[br]l03={1,1,0}[br]l23={1,0,1}[br]l13={0,1,1}[br]l12={1,1,1}[br]li={0,0,1}[br]text2="l01="+l01+", l02="+l02+",l03="+l03+",l23="+l23+",l13="+l13+",l12="+l12+",li="+li+""[br][br]pnt1={p0,p1,p2,p3,p1i,p2i,p3i}[br]pnt2={p0,p1,p2,p3,p1i,p2i,p3i}[br]Pname={"p0","p1","p2","p3","p1i","p2i","p3i"}[br]line1={l01,l02,l03,l23,l13,l12,li}[br]line2={l01,l02,l03,l23,l13,l12,li}[br]Lname={"l01","l02","l03","l23","l13","l12","li"}[br][br]a=slider(1,Length(pnt1),1)[br]b=slider(1,Length(pnt1),1)[br][color=#0000ff]Lres=[b]Cross[/b](Element(pnt1,a), Element(pnt2,b))[br][/color]Lfix={Mod(Lres(1)+2,2),Mod(Lres(2)+2,2),Mod(Lres(3)+2,2)}[br]Lindx=IndexOf(Lfix, line1)[br]text3="点"+Element(Pname,a) +"と点"+Element(Pname,b)+"を通る線は"+Element(Lname,Lindx)+""[br][br]c=slider(1,Length(line1),1)[br]d=slider(1,Length(line1),1)[br][color=#0000ff]Pres=[b]Cross[/b](Element(line1,c), Element(line2,d)[br][/color]Pfix={Mod(Pres(1)+2,2),Mod(Pres(2)+2,2),Mod(Pres(3)+2,2)}[br][br]Pindx=IndexOf(Pfix, pnt1)[br]text4="直線"+Element(Lname,c) +"と直線"+Element(Lname,d)+"の交点は"+Element(Pname,Pindx)+""[br][br]text5="点X=[x,y,z]"[br]text6="直線の法線N=[a,b,c]"[br]text7="X・N=ax+by+cz=0"[br][br]スライダーa,bの見出しは点、スライダーc、dの見出しは直線にしよう。[br]そして、意図をもって[br]オブジェクトを適当に並べてみてください。[br]Lfix,Pfixは、外積だけだと負の数になってしまうことがあるので、[br]答えにあるベクトルを探し損ねるることをさけるため[b]mod 2の補正[/b]をしてます。