ぱらぱらめくる『楽しもう射影平面』目で見る組合せトポロジーと射影幾何学
- 第 I 部 目で見る閉曲面の分類定理
- 第1章 閉曲面とその表現
- 第2章 いろいろな曲面と閉曲面
- 第3章 多面体グラフとオイラー標数
- 第4章 閉曲面の分類定理
- 第 II 部 射影平面とデザルクの定理
- 第5章 平面上のデザルクの定理
- 第6章 射影平面の再構成
- 第7章 射影変換
- 第8章 複比
第 I 部 目で見る閉曲面の分類定理
第1章 閉曲面とその表現
- 円板、境界、開円板、球面、球体
- 曲面:無限に大きくはなく、全体は2つ以上の離れた部分にわかれておらず、図形に接する点はその図形の点であり、図形のどの点Pにおいても、その十分近くの部分はPを中心とする開円板または半開円板に近似的に等しい
- 閉曲面は、Pの周りが開円板
- 位相同型:連続な全単射で逆写像も連続な写像が存在する関係。切って張り合わせたものも位相同型(ねじっても)
- 図形の(位相的)同値関係:同値関係は、2要素間の関係が、反射律、対称律、推移律を満たすようなもの
- ジョルダンの閉曲線定理:S2では閉曲線がS2を2分する(それに対して、T2(トーラス)上の閉曲線は曲面を2分しない)
- S2上の閉曲線同士が交叉するかどうか、T2上の閉曲線同士が交叉するかどうかという区別にもなる
- 展開図:閉曲面を切り開いた切断曲線が、展開図の境界として表れる。その境界は張り合わせ方に関する情報を「向き」として持つ。この向きのパターンが位相と対応する。展開図の境界にある張り合わせの向き情報に従って張り合わせるとき、張り合わせの順序によらず、一意な閉曲面になる(位相同型な閉曲面になる)
- 多角形・多辺形
- 任意の閉曲面は三角形の辺を貼り合わせてできる図形=2次元単体的複体の多面体と位相同型
- 表示式:張り合わせの向き情報を使って、閉曲面が代数的に表される。S2の場合は、四面体の展開図としてみればと表される。より簡略にとも表せる
第2章 いろいろな曲面と閉曲面
- 閉じていない曲面の表示式:例えば、円板の境界はどこも張り合わせないから、とというペアが存在しない。展開図が四角形なら、4辺は。単純化すれば、。リボンをねじらずに輪っかにするか、メビウスの輪にするかもととの違いで表示できる
- ジョルダン-ブラうわーの分離定理:閉曲面をとらえるのに、閉曲面上の閉曲線を用いたが、そこでは閉曲線が閉曲面を2分するかどうかが問題となった。閉曲面自身は、3次元空間において、「空間を二分するもの」と見る立場もある
- 具体的な展開図があると、それに対応する表示式がある。位相同型な閉曲面の展開図のバリエーションは、位相的に同じものなので、展開図同士に移りあう関係があり、表示式にも移りあう関係がある。表示式には代数的演算が付随していることになる
- 次元の制約:メビウスの輪(リボン)の境界はS1同相だが、3次元空間でみると、メビウスの輪の中心軸を2巡する。これを4次元に上げると、2巡しているように考える必要がなくなる。次元は位相を考えるときにこのような役割をする
- クロスキャップ:メビウスの輪の境界であるS1を「ほどいて」見せる工夫として紹介されるクロスキャップ。この考え方が射影平面にも用いられる。クロスキャップは現実に3D空間で作ろうとすると(メビウスの輪の境界をほどいた『ツケ』が最後の張り合わせに要求されて実現できないが、写真で2か所のQと2か所のRとをねじりながら張り付けたものがクロスキャップ。高次元では実現できる。青で示したのは、「表と裏」の区別。メビウスの輪では表と裏は連続的に推移するので、この模型でも白と青とが推移している
- クラインの壺もクロスキャップを使って表せる
- 射影平面:展開図を多角形・多辺形と考えるとき、辺のペアを貼り合わせることになるから、辺の数は偶数。一番簡単な展開図は、2辺形である。2辺がとなっているのは、S2。2辺がとなっているのが射影平面。このように、射影平面は「非常に基本的な閉曲面」であることがわかる
- 射影平面は、n次元の座標を表すのにn+1次元の同次座標を用いる。クロスキャップも実現するためには次元を上げる必要がある。そういう意味で、射影平面がクロスキャップを要する幾何的性質を持つと言える
- P2(射影平面)は4次元実数空間において反球面Sの上部をクロスキャップの形に閉じた閉曲面
- 射影平面の表示式は
- 向き付け可能性
第3章 多面体グラフとオイラー標数
- 多面体グラフ:頂点数、辺数、面数と位相の関係がオイラー標数
- 正多面体:頂点・辺・面がすべて等質なので、それに伴って、それらの数に特定の関係式がある
- 通常の正多面体はS2と位相同型な正多面体のことだが、正多面体が等質・対称であることとすれば穴があってもT2(トーラス)と位相同型の正多面体などもある。射影平面もある位相を持つ閉曲面なので、その位相に関する正多面体もある
- 射影平面を「視覚化する」:単位円板上に格子点を置き、単位円周上に等間隔点を打つ。近い点同士に辺を引くとグラフができる。射影平面では、円周の点に同一視が発生するので、その辺を加えて描く
第4章 閉曲面の分類定理
- 閉曲面の連結和:連結ために曲面上の閉曲線で穴を明け、穴同士を併せる。穴の位置は、位相的にどこへ動かしても、位相上同じだから、どこに穴を明けるかは無関係な処理である。展開図と表示式で連結和も説明できる
- トーラスと射影平面との連結和は、射影平面と射影辺面と射影平面(3つの射影平面)の連結和になる
- 連結和をとるときに、リボン(帯状の曲面)を考えることがある。そのリボンを「ハンドル」と呼ぶ
- 展開図と展開図との連結は、表示式の一部と表示式の一部とをつなぐことになるので、表示式の構成要素のどれをどのように(向きを考慮して)繋ぐかとしてあらわされるから、組み合わせ問題的に考えることができる
- 穴を明けて、そこに円板を戻すのは、元の閉曲面に戻すこと。穴を明けて、そこにクロスキャップをかぶせることもできて、それは位相非同相の閉曲面を作る
- 閉曲面の分類定理:任意ののいずれかになる、というもの。これでわかるように、射影平面、トーラス、球面の3つが閉曲面の「要素」
第 II 部 射影平面とデザルクの定理
第5章 平面上のデザルクの定理
- 3つの点は、ある線の上に共存しているとき、「共線的」と言い、3つの線が、ある1点を共有しているとき、「共点的」と言う
- デザルクの定理:3角形A1A2A3,B1B2B3を考える。直線A1B1,A2B2,A3B3が共点的であるとき、直線A1B1,A2B2,A3B3が作る、3つの交点P1,P2,P3は共線的
- これもデザルクの定理:3角形A1A2A3,B1B2B3を考える。直線A1B1,A2B2,A3B3が平行であるとき、直線A1B1,A2B2,A3B3が作る、3つの交点P1,P2,P3は共線的
- これもデザルクの定理:3角形A1A2A3,B1B2B3を考える。直線A1B1,A2B2,A3B3が共点的であるとき、直線A1B1,A2B2が平行であるならば、A3B3も平行。直線が相互に平行であるとき、それらの交点を考えることはできないが、平行線は無限遠点で交わると考えると直線A1B1,A2B2は相変わらず、(無限遠点を共点として)共点的
- これもデザルクの定理:3角形A1A2A3,B1B2B3を考える。直線A1B1,A2B2,A3B3が平行であるとき、直線A1B1,A2B2が平行であるならば、A3B3も平行。これは、3直線が平行~無限遠点で共点的と考えれば、同じ論理
- デザルクの定理は平面で考え始めてよいが、空間にも拡張できる
- デザルクの定理はその逆、双対もある
第6章 射影平面の再構成
- 射影平面は、デザルクの定理が成り立つという意味で実数2次元平面と同じだが、実数2次元平面では平行な直線は交点を持たないのに対して、射影平面は、任意の2直線が1つの交点を持つという性質を持っている
- その方向からの導入をするために、本書の第 II 部ではデザルクの定理から入っている
- デザルクの定理では、直線と点との関係から定めており、点の集合、直線の集合、点と直線との結合・接続関係から定まっている。この定め方を組み合わせ論的定義と呼ぶ
- 射影平面をこの立場から定義すると:
- 任意の異なる2点に対して、それらを通る直線が1本だけ存在する
- 任意の異なる2直線はちょうど1点で交わる
- 座標平面を部分として含む
- デザルクの定理が成立する
- 他方、射影平面は、「三次元空間内の原点を通る直線全体の成す集合」として定めることもあり、この立場から斉次座標などが導入される。これを「線形代数的な定義」と言う
- ちなみに、第 I 部で定めた射影平面は位相幾何的なものであり、「向きを持たない実二次元の多様体の基本的な例」となっている
第8章 複比
- 射影変換での不変量が複比
- 逆に言うと、「複比を変えない一対一変換が射影変換」
Rの文字列行列を数値行列に変換する
X<- mapply(X, FUN=as.numeric)
2グループの友人関係を突き止める
- 複数のエレメントが2郡に分かれていることがわかっているとする
- エレメントペアについて、同じグループなのか、別のグループなのかの情報が部分的にわかっているものとする
- このとき、同じグループのエレメント同士は同じグループだ、というルールを使って、全エレメントの2グループ分けを達成したい
- 今、部分的にわかっている情報がエレメント数xエレメント数の行列Sに、±1、0で与えられているとする
- 1は同じグループ、-1は別のグループ、0は不明
- ]としてやると、同じグループのときには、正の値が、違うグループの場合には、負の値が加わっているので、グループについて正負の逆転は起きない
- エレメント数だけSをべき乗してやると、それが取り出しうる最大の情報と思われるので。。。
ランダム正則グラフを作る
- ランダム正則グラフの隣接行列の作成方法がWikipediaにある(こちら)
- 次数rの正則グラフが、頂点数nだとする
- 今、個のアイテムをn個のバケツにr個ずつ入れる
- N個のアイテムを2個ずつのペアにする
- このようにすると、頂点数Nのr正則グラフができるが、このr正則グラフは特別な正則グラフで、すべての頂点は次数rのクリークに帰属することになる(バケツがクリークに対応する)
- これを頂点数nのグラフにするべく、同一バケツのr個のアイテムを1つのノードとみなす
- これにより、すべてのバケツからr個の手が伸びた状態となり、これがランダムr正則グラフ
- ただし、この方法だと、自己ノードへの辺(ループ)ができたり、ノード間に複数のエッジが引かれたりするので、そのような場合を避けたい場合には、できたグラフを判定し、不適切な場合は作り直すことになる
三角メッシュの縫合手術
- こちらの記事
ryamada.hatenadiary.jp
で、色々な凸多面体(正三角形が作る)を用意した
- それらの正三角形を貼り合わせると、複雑な正三角形メッシュが作れる
- 以下の関数はその縫合手術関数
正三角形で覆われた穴のない立体
- 多面体を考える
- 凸多面体に限らないと列挙が終わらないので、凸多面体に限ることが多い
- 以下では原則として凸多面体を扱いつつ、場合によっては凸ではない多面体も扱うことになる
- 一番、制約がきついのは正多面体
- 正多面体 regular polyhedron は、すべての頂点、面が等質
- 正四面体 tetrahedron、正八面体octahedron、正二十面体 icosahedronの3種類
- 三角形の頂点を反時計回りにたどることで、面数x3の行列としてあらわすことにする
tetra <- rbind(c(1,2,3),c(1,3,4),c(1,4,2),c(3,2,4)) octa <- rbind(c(1,2,3),c(1,3,4),c(1,4,5),c(1,5,2),c(6,3,2),c(6,4,3),c(6,5,4),c(6,2,5)) icosa <- rbind(c(1,2,3),c(1,3,4),c(1,4,5),c(1,5,6),c(1,6,2),c(3,2,7),c(4,3,8),c(5,4,9),c(6,5,10),c(2,6,11),c(3,7,8),c(4,8,9),c(5,9,10),c(6,10,11),c(2,11,7),c(12,8,7),c(12,9,8),c(12,10,9),c(12,11,10),c(12,7,11))
- 正三角形で張られる凸多面体は、4,6,8,10,12,14,16,20の8種類
- うち3種類は正多面体
- 残り5種類は正三角形
- この8種類は、凸デルタ多面体と言う
- ここでいう凸とは、すべての三角形が隣接する三角形と凸関係になることを意味する(平面状になることも非凸とする
- 隣接する三角形が平面状に並ぶ場合は、coplanar trianglesがあると言い、そのような多面体は、Non-strictly-convex (triangular) polyherdonと言う
- 隣接する三角形がk角形(k>3)となるので、凸多面体ではあるけれど、構成面が三角形だけとは限らないとみなされる
- Non-strictly-convexなもの、凹部分も許したデルタ多面体は無限にある
- 5種類のstrictly-convex delta polyhedra
- デルタ6面体 triangular bipyramid, hexahedron、デルタ10面体 pentagonal bipyramid, decahedron、デルタ12面体 snub disphenoid, dodecahedron、デルタ14面体 triaugmented triangular prism, tetracaideca-deltahedron、デルタ16面体 gyroelongated square bipyramid, heccaideca-deltahedron
# strictly-convex delta-hedron hexa <- rbind(c(1,2,3),c(1,3,4),c(1,4,2),c(5,3,2),c(5,4,3),c(5,2,4)) deca <- rbind(c(1,2,3),c(1,3,4),c(1,4,5),c(1,5,6),c(1,6,2),c(7,3,2),c(7,4,3),c(7,5,4),c(7,6,5),c(7,2,6)) # decaは5角錐の張り合わせ。dodecaはその張り合わせ部分に2つの三角形を割り込ませたもの dodeca <- rbind(c(1,2,3),c(1,3,4),c(1,4,5),c(1,5,6),c(1,6,2),c(7,3,2),c(7,4,3),c(7,5,4),c(7,8,5),c(7,2,8),c(2,6,8),c(8,6,5)) # 正三角柱(側面は正方形)の側面に正四角錐を張り付け tetracaideca <- rbind(c(1,2,3),c(7,8,9),c(4,2,1),c(4,1,7),c(4,7,8),c(4,8,2),c(5,3,2),c(5,2,8),c(5,8,9),c(5,9,3),c(6,1,3),c(6,3,9),c(6,9,7),c(6,7,1)) # 正四角錐で正四角反柱をサンドイッチ heccaideca <- rbind(c(1,2,3),c(1,3,4),c(1,4,5),c(1,5,2),c(10,7,6),c(10,8,7),c(10,9,8),c(10,6,9),c(2,6,3),c(3,7,4),c(4,8,5),c(5,9,2),c(3,6,7),c(4,7,8),c(5,8,9),c(2,9,6))
- ジョンソンの立体
- 上記8種類凸デルタ多面体のうち、正多面体3種を除いた5種はジョンソンの立体と呼ばれる凸多面体にも含まれる
- ジョンソンの立体とは、等長多角形で張られた凸多面体で、正多面体、半正多面体、アルキメデスの角柱、アルキメデスの反角柱を除いたものである
- ジョンソンの立体の構成多角形は3角形であっても他の多角形であってもよく、異なる辺数の多角形が混ざっていてもよい
- 全92種類であることが確認されている
- 上記の5種の凸デルタ多面体(正多面体を除く)は、すべての多角形が三角形であるジョンソンの立体とも言える。
- ジョンソンの立体で、構成多角形が3角形のみ、6角形のみ、3角形または6角形のみのものは、6角形を三角形に分割することで、non-strictly-convexな正三角形による多面体とみなしうるが、そのようなジョンソンの立体は、三角形のみからなる5種類のジョンソン立体=凸デルタ多面体のみであることが知られている。したがって、三角形で張られたstrictly-convex,non-strictly-convexな多面体の列挙にあたって、ジョンソンの立体は考慮する必要がない
- ジョンソンの立体が三角メッシュの双対グラフになっている可能性は、エッジ数が3kで頂点数が2k、面数がk+2になっている場合であって、3正則グラフになっている場合に限られる。その目で、92種を確認すると、どれも満足しないことがわかる
- したがって、ジョンソンの立体はそれ自体もその双対グラフも、正三角形メッシュの探索候補としては、5種の凸デルタ多面体以外にはならない
- 非ジョンソンの立体
- ジョンソンの立体に含まれない多面体には、正多面体、半正多面体、アルキメデスの角柱(プリズム)、アルキメデスの反角柱(アンチプリズム)がある
- 正多面体の検討は済んでいる
- 半正多面体の中には、サッカーボールがあり、これは3正則グラフであり、双対グラフが凹三角形メッシュに対応するから、要検討対象であることがわかる。実際、エッジ数と頂点数の関係が3k,2kになっているものが多数あり、それらはいずれも、3正則グラフである
- アルキメデスの角柱は側面が正方形であるので、そのものを三角メッシュにはできないが、双対が三角メッシュになる。上面と下面は任意角形でよい
- アルキメデスの反角柱は側面が正三角形であり、上面と下面が正三角形または正六角形の場合には三角メッシュとなる
- 半正多面体
trunc.tetra <- rbind(c(1,2,3),c(1,3,4),c(1,4,2),c(2,5,3),c(3,6,4),c(4,7,2),c(8,5,2),c(8,3,5),c(8,6,3),c(8,4,6),c(8,7,4),c(8,2,7))
-
- 切頂六面体
# 半正多面体 truncated cube trunc.tetra <- rbind(c(1,2,3),c(1,3,4),c(1,4,2),c(2,5,3),c(3,6,4),c(4,7,2),c(8,5,2),c(8,3,5),c(8,6,3),c(8,4,6),c(8,7,4),c(8,2,7))
-
- 切頂八面体 truncated octahedron
trunc.octa <- rbind(c(1,2,6),c(1,6,3),c(1,3,7),c(1,7,4),c(1,4,5),c(1,5,2),c(6,2,11),c(6,11,9),c(6,9,12),c(6,12,3),c(7,3,12),c(7,12,10),c(7,10,13),c(7,13,4),c(5,4,13),c(5,13,8),c(5,8,11),c(5,11,2),c(9,14,12),c(12,14,10),c(10,14,13),c(13,14,8),c(8,14,11),c(11,14,9))
-
- 切頂十二面体 truncated dodecahedron
trunc.dodeca <- rbind(c(1,2,7),c(1,7,3),c(1,3,8),c(1,8,4),c(1,4,9),c(1,9,5),c(1,5,10),c(1,10,6),c(1,6,11),c(1,11,2),c(2,11,7),c(3,7,8),c(4,8,9),c(5,9,10),c(6,10,11),c(7,12,8),c(8,14,9),c(9,16,10),c(10,18,11),c(11,20,7),c(7,20,26),c(7,26,21),c(7,21,22),c(7,22,12),c(8,12,22),c(8,22,13),c(8,13,23),c(8,23,14),c(9,14,23),c(9,23,15),c(9,15,24),c(9,24,16),c(10,16,22),c(10,22,17),c(10,17,25),c(10,25,18),c(11,18,25),c(11,25,19),c(11,19,26),c(11,26,20),c(21,26,22),c(13,22,23),c(15,23,24),c(17,24,25),c(19,25,26),c(22,26,31),c(22,31,32),c(22,32,27),c(22,27,23),c(23,27,32),c(23,32,28),c(23,28,24),c(24,28,32),c(24,32,29),c(24,20,25),c(25,29,32),c(25,32,30),c(25,30,26),c(26,30,32),c(26,32,31))
-
- 切頂二十面体(サッカーボール)
trunc.icosa <- rbind(c(1,7,4),c(4,7,8),c(1,9,7),c(1,2,9),c(2,23,9),c(2,3,23),c(3,29,23),c(3,19,29),c(3,13,19),c(2,13,3),c(2,10,13),c(1,10,2),c(1,5,10),c(1,4,5),c(4,6,5),c(4,8,6),c(6,8,17),c(8,26,17),c(17,26,31),c(17,31,16),c(6,17,16),c(11,6,16),c(5,6,11),c(5,11,12),c(10,5,12),c(10,12,13),c(13,12,14),c(13,14,19),c(8,21,26),c(8,7,21),c(7,22,21),c(7,9,22),c(9,23,22),c(22,23,25),c(23,29,25),c(16,31,32),c(16,32,15),c(16,15,11),c(11,15,12),c(12,15,14),c(15,32,18),c(15,18,14),c(14,18,19),c(20,19,18),c(29,19,20),c(26,27,31),c(27,26,24),c(26,21,24),c(21,22,24),c(24,22,25),c(27,24,28),c(24,25,28),c(25,29,28),c(28,29,20),c(31,27,30),c(27,28,30),c(28,20,30),c(32,31,30),c(18,32,30),c(20,18,30))
-
- 斜方切頂立方八面体 truncated cuboctahedron
trunc.cubocuta <- rbind(c(1,2,3),c(1,3,4),c(1,4,5),c(1,5,2),c(2,5,9),c(2,9,8),c(2,8,6),c(2,6,3),c(3,6,10),c(3,10,16),c(3,16,11),c(3,11,7),c(3,7,4),c(4,7,12),c(4,12,8),c(4,8,5),c(5,8,13),c(5,13,19),c(5,19,14),c(5,14,9),c(6,15,10),c(7,11,12),c(8,12,13),c(9,14,15),c(10,15,21),c(10,21,22),c(10,22,16),c(16,22,11),c(11,22,17),c(11,17,12),c(12,17,23),c(12,23,18),c(12,18,13),c(13,18,24),c(13,24,19),c(19,24,14),c(14,24,20),c(14,20,15),c(15,20,25),c(15,25,21),c(21,25,22),c(22,25,26),c(22,26,23),c(22,23,17),c(23,26,24),c(23,24,18),c(24,26,25),c(20,24,25))
-
- 斜方切頂二十・十二面体 truncated icosidodecahedron 辺数180、頂点数(三角メッシュの三角面数)120なのでちょっと列挙は省略
- アルキメデスの角柱(プリズム)の双対としての三角メッシュ
# アルキメデスの角柱(プリズム) # 上面・下面がk角形であり、側面が正方形であるような角柱を考える # 3正則グラフなので、この双対グラフとしての三角メッシュを作る関数を作る my.prism.tri <- function(k){ top =1 bottom = k+2 sides = 2:(k+1) sides <- c(sides,2) ret <- matrix(0,0,3) for(i in 1:k){ tmp1 <- c(top,sides[i],sides[i+1]) tmp2 <- c(bottom,sides[i+1],sides[i]) ret <- rbind(ret,tmp1,tmp2) } return(ret) } my.prism.tri(4)
- アルキメデスの反角柱(アンチプリズム)からの三角メッシュ
# 上面・下面が3角形・6角形のそれぞれのアンチプリズム antiprism3 <- octa # 正八面体のこと antiprism6 <- rbind(c(1,2,3),c(1,3,4),c(1,4,5),c(1,5,6),c(1,6,7),c(1,7,2),c(14,9,8),c(14,10,9),c(14,11,10),c(14,12,11),c(14,13,12),c(14,8,13),c(2,8,3),c(3,9,4),c(4,10,5),c(5,11,6),c(6,12,7),c(7,13,2),c(3,8,9),c(4,9,10),c(5,10,11),c(6,11,12),c(7,12,13),c(2,13,8))
- 面行列を一括して: