【オイラーの多面体定理と正多面体】正六面体と正十二面体の間の往復(「屋根掛け法」とは何か？)

古代ギリシャ時代から「**正六面体**(<font color="blue">Regular Dodecahedron</font>Cube)**と正十二面体**(<font color="blue">Regular Dodecahedron</font>)**の間を往復する方法**」として知られてきた「**屋根掛け法**(<font color="blue">Roofing Method</font>)」の出発点は「**正五角形の三角形と四角形への分割**」です。
![Rplot23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ab296b34-c9dd-2d07-e5ba-555fe03ec4cd.png)

```R
#分割数Nod(Number of divide)=5

NoD<-5
#円周分割数列(Sequence of Divided Circumference)
SoDC<-seq(0,2*pi,length=NoD+1)
#円周上の五角形の頂点を集める。
cx_nomal=cos(SoDC)
cy_nomal=sin(SoDC)
cx_reverse=cos(SoDC+pi)
cy_reverse=sin(SoDC+pi)
#グラフ描画
plot(cx_nomal,cy_nomal,asp=1,col=rgb(0,0,1),type="l",xlim=c(-1,1),ylim=c(-1,1),main="Regular Pentagon",xlab="Cos(θ)",ylab="Sin(θ)",lwd=1.2)
par(new=T)
plot(cx_reverse,cy_reverse,asp=1,col=rgb(1,0,0),type="l",xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",lwd=1.2)
#背景円の塗り潰し
Circumference<-seq(0,2*pi,length=60)
cx_circle=cos(Circumference)
cy_circle=sin(Circumference)
polygon(cx_circle, #x
cy_circle, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色

#三角形(正方向)の塗り潰し
polygon(c(cx_nomal[1],cx_nomal[2],cx_nomal[5],cx_nomal[1]), #x
c(cy_nomal[1],cy_nomal[2],cy_nomal[5],cy_nomal[1]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

#三角形(逆方向)の塗り潰し
polygon(c(cx_reverse[1],cx_reverse[2],cx_reverse[5],cx_reverse[1]), #x
c(cy_reverse[1],cy_reverse[2],cy_reverse[5],cy_reverse[1]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

#文字追加
text(cx_nomal,cy_nomal, labels=c("a","b","c","d","e"),col=rgb(0,0,1))
text(cx_reverse,cy_reverse, labels=c("a","b","c","d","e"),col=rgb(1,0,0))
#補助線
segments(1,0,-1,0,lty=3,col=rgb(0,0,0))
```
とりあえずイメージ操作的には以下の様な「<font color="red">いない、いない、ばぁ!!</font>」形式で思い浮かべたら良いでしょう。

- まずは上図でいうところの**三角形**<font color="green">abe</font>と**四角形**<font color="green">bcde</font>(<font color="blue">正五角形の断片</font>)がそれぞれ表面に<font color="green">12</font>**個**ずつ現れる<font color="green">24</font>**面体**を構成する（<font color="red">いない、いない…</font>）。
- それぞれを１対ずつ水平に並べて**正五角形**を再現すれば、これが表面に<font color="green">12</font>個並ぶ**正十二面体**があらためて顕現する（<font color="red">…ばぁ!!</font>）。

平面上におけるイメージ展開は以下。

①まずは上掲イメージ展開に現れる「**正方形**」「**分割三角形**」「**分割四角形**」が全て**射影**(<font color="blue">Projection</font>)として同居する**正十六角形**(<font color="blue">Regular Hexadecagon</font>)をイメージする（<font color="blue">あくまで射影なので、形が多少崩れてても気にしない</font>）。
![Rplot24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/8e79b29f-3759-b9b7-9da7-ded6241dfa84.png)

```R
#分割数Nod(Number of divide)=16
NoD<-16
#円周分割数列(Sequence of Divided Circumference)
SoDC<-seq(0,2*pi,length=NoD+1)
#円周上の四角形の頂点を集める。
cx_nomal=cos(SoDC)
cy_nomal=sin(SoDC)

#グラフ描画
plot(cx_nomal,cy_nomal,asp=1,col=rgb(0,0,0),type="l",xlim=c(-1,1),ylim=c(-1,1),main="Regular Hexadecagon",xlab="Cos(θ)",ylab="Sin(θ)",lwd=1.2)

#背景円の塗り潰し
Circumference<-seq(0,2*pi,length=60)
cx_circle=cos(Circumference)
cy_circle=sin(Circumference)
polygon(cx_circle, #x
cy_circle, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色

#文字追加
text(cx_nomal,cy_nomal, labels=c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"),col=rgb(0,0,0))

#正方形塗り潰し
polygon(c(cx_nomal[1],cx_nomal[5],cx_nomal[9],cx_nomal[13],cx_nomal[1]), #x
c(cy_nomal[1],cy_nomal[5],cy_nomal[9],cy_nomal[13],cy_nomal[1]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,1,0)) 　#塗りつぶす色

#分割三角形塗り潰し
polygon(c(cx_nomal[1],(cx_nomal[3]+cx_nomal[15])/2,cx_nomal[5],cx_nomal[1]), #x
c(cy_nomal[1],cy_nomal[3],cy_nomal[5],cy_nomal[1]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

polygon(c(cx_nomal[9],cx_nomal[11],cx_nomal[13],cx_nomal[9]), #x
c(cy_nomal[9],cy_nomal[11],cy_nomal[13],cy_nomal[9]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

#分割四角形塗り潰し
polygon(c(cx_nomal[5],cx_nomal[6],cx_nomal[8],cx_nomal[9],cx_nomal[5]), #x
c(cy_nomal[5],cy_nomal[6],cy_nomal[8],cy_nomal[9],cy_nomal[5]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

polygon(c(cx_nomal[13],cx_nomal[14],cx_nomal[16],cx_nomal[1],cx_nomal[13]), #x
c(cy_nomal[13],cy_nomal[14],cy_nomal[16],cy_nomal[1],cy_nomal[13]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色
```

②次いで「**正方形**」表面上に「**分割三角形**」と「**分割四角形**」のイメージを**射影**する。
![Rplot25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/bbaeb08a-31a7-08f0-f8a3-4f0b9fcfe4a3.png)

```R
#分割数Nod(Number of divide)=16
NoD<-16
#円周分割数列(Sequence of Divided Circumference)
SoDC<-seq(0,2*pi,length=NoD+1)
#円周上の四角形の頂点を集める。
cx_nomal=cos(SoDC)
cy_nomal=sin(SoDC)

#グラフ描画
plot(cx_nomal,cy_nomal,asp=1,col=rgb(0,0,0),type="l",xlim=c(-1,1),ylim=c(-1,1),main="Regular Hexadecagon",xlab="Cos(θ)",ylab="Sin(θ)",lwd=1.2)

#背景円の塗り潰し
Circumference<-seq(0,2*pi,length=60)
cx_circle=cos(Circumference)
cy_circle=sin(Circumference)
polygon(cx_circle, #x
cy_circle, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色

#文字追加
text(cx_nomal,cy_nomal, labels=c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"),col=rgb(0,0,0))

#分割三角形塗り潰し
polygon(c(cx_nomal[1],cx_nomal[3],cx_nomal[5],cx_nomal[1]), #x
c(cy_nomal[1],cy_nomal[3],cy_nomal[5],cy_nomal[1]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

polygon(c(cx_nomal[9],cx_nomal[11],cx_nomal[13],cx_nomal[9]), #x
c(cy_nomal[9],cy_nomal[11],cy_nomal[13],cy_nomal[9]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

#分割四角形塗り潰し
polygon(c(cx_nomal[5],cx_nomal[6],cx_nomal[8],cx_nomal[9],cx_nomal[5]), #x
c(cy_nomal[5],cy_nomal[6],cy_nomal[8],cy_nomal[9],cy_nomal[5]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

polygon(c(cx_nomal[13],cx_nomal[14],cx_nomal[16],cx_nomal[1],cx_nomal[13]), #x
c(cy_nomal[13],cy_nomal[14],cy_nomal[16],cy_nomal[1],cy_nomal[13]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

#「射影された」分割三角形塗り潰し
polygon(c(cx_nomal[5],cx_nomal[9],cx_nomal[6],cx_nomal[5]), #x
c(cy_nomal[5],cy_nomal[9],cy_nomal[8],cy_nomal[5]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

polygon(c(cx_nomal[13],cx_nomal[1],cx_nomal[14],cx_nomal[13]), #x
c(cy_nomal[13],cy_nomal[1],cy_nomal[16],cy_nomal[13]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色

#「射影された」分割四角形塗り潰し
polygon(c(cx_nomal[1],cx_nomal[5],cx_nomal[6],cx_nomal[14],cx_nomal[1]), #x
c(cy_nomal[1],cy_nomal[5],cy_nomal[8],cy_nomal[16],cy_nomal[1]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

polygon(c(cx_nomal[9],cx_nomal[13],cx_nomal[14],cx_nomal[6],cx_nomal[9]), #x
c(cy_nomal[9],cy_nomal[13],cy_nomal[16],cy_nomal[8],cy_nomal[9]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1)) 　#塗りつぶす色

#補助線(X軸とY軸)
segments(-1,0,1,0,lty=3,col=rgb(0,0,0))
segments(0,-1,0,1,lty=3,col=rgb(0,0,0))

#「分割三角形」を巡る補助線と横罫線
segments(cx_nomal[3],cy_nomal[3],cx_nomal[11],cy_nomal[11],lty=3,col=rgb(0,0,0))

segments(cx_nomal[2],cy_nomal[2],cx_nomal[8],cy_nomal[8],lty=3,col=rgb(0,0,0))
segments(cx_nomal[3],cy_nomal[3],cx_nomal[7],cy_nomal[7],lty=3,col=rgb(0,0,0))
segments(cx_nomal[4],cy_nomal[4],cx_nomal[6],cy_nomal[6],lty=3,col=rgb(0,0,0))

segments(cx_nomal[10],cy_nomal[10],cx_nomal[16],cy_nomal[16],lty=3,col=rgb(0,0,0))
segments(cx_nomal[11],cy_nomal[11],cx_nomal[15],cy_nomal[15],lty=3,col=rgb(0,0,0))
segments(cx_nomal[12],cy_nomal[12],cx_nomal[14],cy_nomal[14],lty=3,col=rgb(0,0,0))

#「分割四角形」を巡る補助線と縦罫線
segments(cx_nomal[7],cy_nomal[7],cx_nomal[15],cy_nomal[15],lty=3,col=rgb(0,0,0))

segments(cx_nomal[2],cy_nomal[2],cx_nomal[16],cy_nomal[16],lty=3,col=rgb(0,0,0))
segments(cx_nomal[3],cy_nomal[3],cx_nomal[15],cy_nomal[15],lty=3,col=rgb(0,0,0))
segments(cx_nomal[4],cy_nomal[4],cx_nomal[14],cy_nomal[14],lty=3,col=rgb(0,0,0))

segments(cx_nomal[6],cy_nomal[6],cx_nomal[12],cy_nomal[12],lty=3,col=rgb(0,0,0))
segments(cx_nomal[7],cy_nomal[7],cx_nomal[11],cy_nomal[11],lty=3,col=rgb(0,0,0))
segments(cx_nomal[8],cy_nomal[8],cx_nomal[10],cy_nomal[10],lty=3,col=rgb(0,0,0))
```
③実際の３次元空間上での見え方はこんな感じ。**正十二面体**に内接する**立方体**の<font color="green">6</font>**面**それぞれに「**屋根掛け**(<font color="blue">Roofing</font>)」した結果の様にも見えるので「**屋根掛け法**(<font color="blue">Roofing Method</font>)」と呼ばれる。
![cube_in_dodecahedron19.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/91cdee4b-f7e1-aba8-4ac4-ad02816a8431.gif)

```R
library(rgl)

#原蹠(PorTal)
portal_i<-0
portal_j<-0
portal_k<-1
portal_text=paste0("PT(",portal_i,",",portal_j,",",portal_k,")")

#原蹠表示
texts3d(portal_i,portal_j,portal_k,texts=portal_text,col=rgb(0,0,0),adj=1.0)

#対蹠(AntiPordal)
antipordal_i<-0
antipordal_j<-0
antipordal_k<--1
antipordal_text=paste0("AP(",antipordal_i,",",antipordal_j,",",antipordal_k,")" main="Cross section for ")

#対蹠表示
texts3d(antipordal_i,antipordal_j,antipordal_k,texts=antipordal_text,col=rgb(0,0,0),adj=1.0)

#立方対角線(Cubic Diagonal)
lines3d(c(portal_i,antipordal_i),c(portal_j,antipordal_j),c(portal_k,antipordal_k),col=rgb(1,0,0),lwd=2)

###正十二面体の描画###

#xy軸上の経度(LoNgitude)座標

#最初の頂点３個x2
LN01=sin(1/5*pi)
c0<-seq(0,2*pi,length=4)

#頭蹠側一段目３個
LNa_cos<-cos(c0)*LN01
LNa_sin<-sin(c0)*LN01

#対蹠側一段目３個
LNd_cos<-cos(c0+pi)*LN01
LNd_sin<-sin(c0+pi)*LN01

#中央の頂点6個x2
LN10=sin(2/5*pi)
c00<-seq(0,2*pi,length=4)

#頭蹠側一段目３個
bx00<-cos(c00+pi/2)
by00<-sin(c00+pi/2)
bx01<-cos(c00+pi*2/5+pi/2)
by01<-sin(c00+pi*2/5+pi/2)
bx02<-c(bx00[1],bx01[1],bx00[2],bx01[2],bx00[3],bx01[3],bx00[4])
by02<-c(by00[1],by01[1],by00[2],by01[2],by00[3],by01[3],by00[4])
LNb_cos<-bx02*LN10
LNb_sin<-by02*LN10

#対蹠側一段目３個
cx00<-cos(c00-pi/2)
cy00<-sin(c00-pi/2)
cx01<-cos(c00+pi*2/5-pi/2)
cy01<-sin(c00+pi*2/5-pi/2)
cx02<-c(cx00[1],cx01[1],cx00[2],cx01[2],cx00[3],cx01[3],cx00[4])
cy02<-c(cy00[1],cy01[1],cy00[2],cy01[2],cy00[3],cy01[3],cy00[4])
LNc_cos<-cx02*LN10
LNc_sin<-cy02*LN10

#立方体におけるz軸上の緯度(LaTitude)座標
LTa=4/5
LTb=2/5
LTc=-2/5
LTd=-4/5

#正12面体描写(原蹠から最初の隣点３個へ)
lines3d(c(portal_i,LNa_cos[1]),c(portal_j,LNa_sin[1]),c(portal_k,LTa),col=rgb(0,0,1),lwd=1)
lines3d(c(portal_i,LNa_cos[2]),c(portal_j,LNa_sin[2]),c(portal_k,LTa),col=rgb(0,0,1),lwd=1)
lines3d(c(portal_i,LNa_cos[3]),c(portal_j,LNa_sin[3]),c(portal_k,LTa),col=rgb(0,0,1),lwd=1)

#正12面体描写(対蹠から最初の隣点３個へ)
lines3d(c(antipordal_i,LNd_cos[1]),c(antipordal_j,LNd_sin[1]),c(antipordal_k,LTd),col=rgb(0,0,1),lwd=1)
lines3d(c(antipordal_i,LNd_cos[2]),c(antipordal_j,LNd_sin[2]),c(antipordal_k,LTd),col=rgb(0,0,1),lwd=1)
lines3d(c(antipordal_i,LNd_cos[3]),c(antipordal_j,LNd_sin[3]),c(antipordal_k,LTd),col=rgb(0,0,1),lwd=1)

#正12面体描写(原蹠からの最初の隣点３個から次の隣点６個へ)
lines3d(c(LNa_cos[1],LNb_cos[5]),c(LNa_sin[1],LNb_sin[5]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[1],LNb_cos[6]),c(LNa_sin[1],LNb_sin[6]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[1]),c(LNa_sin[2],LNb_sin[1]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[2]),c(LNa_sin[2],LNb_sin[2]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[3]),c(LNa_sin[3],LNb_sin[3]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[4]),c(LNa_sin[3],LNb_sin[4]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)

#正12面体描写(原蹠からの次の隣点６個からの水平線３本)
lines3d(c(LNb_cos[2],LNb_cos[3]),c(LNb_sin[2],LNb_sin[3]),c(LTb,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[4],LNb_cos[5]),c(LNb_sin[4],LNb_sin[5]),c(LTb,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[6],LNb_cos[1]),c(LNb_sin[6],LNb_sin[1]),c(LTb,LTb),col=rgb(0,0,1),lwd=1)

#正12面体描写(対蹠からの最初の隣点３個から次の隣点６個へ)
lines3d(c(LNd_cos[1],LNc_cos[5]),c(LNd_sin[1],LNc_sin[5]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[1],LNc_cos[6]),c(LNd_sin[1],LNc_sin[6]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[2],LNc_cos[1]),c(LNd_sin[2],LNc_sin[1]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[2],LNc_cos[2]),c(LNd_sin[2],LNc_sin[2]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[3],LNc_cos[3]),c(LNd_sin[3],LNc_sin[3]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[3],LNc_cos[4]),c(LNd_sin[3],LNc_sin[4]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)

#正12面体描写(対蹠からの次の隣点６個からの水平線３本)
lines3d(c(LNc_cos[2],LNc_cos[3]),c(LNc_sin[2],LNc_sin[3]),c(LTc,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNc_cos[4],LNc_cos[5]),c(LNc_sin[4],LNc_sin[5]),c(LTc,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNc_cos[6],LNc_cos[1]),c(LNc_sin[6],LNc_sin[1]),c(LTc,LTc),col=rgb(0,0,1),lwd=1)

#正12面体描写(原蹠からの経路と対蹠からの経路の結合線6本)
lines3d(c(LNb_cos[1],LNc_cos[4]),c(LNb_sin[1],LNc_sin[4]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[2],LNc_cos[5]),c(LNb_sin[2],LNc_sin[5]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[3],LNc_cos[6]),c(LNb_sin[3],LNc_sin[6]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[4],LNc_cos[1]),c(LNb_sin[4],LNc_sin[1]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[5],LNc_cos[2]),c(LNb_sin[5],LNc_sin[2]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[6],LNc_cos[3]),c(LNb_sin[6],LNc_sin[3]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)

###この立方体に内接する正六面体の座標抽出###

#立方体描写(最初に抽出する正方形)
lines3d(c(LNa_cos[1],LNa_cos[2],LNb_cos[3],LNb_cos[4],LNa_cos[1]),c(LNa_sin[1],LNa_sin[2],LNb_sin[3],LNb_sin[4],LNa_sin[1]),c(LTa,LTa,LTb,LTb,LTa),col=rgb(0,1,0),lwd=1)

#立方体描写(最初に抽出した正方形の対面)
lines3d(c(LNd_cos[1],LNd_cos[2],LNc_cos[3],LNc_cos[4],LNd_cos[1]),c(LNd_sin[1],LNd_sin[2],LNc_sin[3],LNc_sin[4],LNd_sin[1]),c(LTd,LTd,LTc,LTc,LTd),col=rgb(0,1,0),lwd=1)

#立方体描写(２つの正方形を結ぶ辺４本)
lines3d(c(LNa_cos[1],LNc_cos[3]),c(LNa_sin[1],LNc_sin[3]),c(LTa,LTc),col=rgb(0,1,0),lwd=1)
lines3d(c(LNa_cos[2],LNc_cos[4]),c(LNa_sin[2],LNc_sin[4]),c(LTa,LTc),col=rgb(0,1,0),lwd=1)
lines3d(c(LNb_cos[3],LNd_cos[1]),c(LNb_sin[3],LNd_sin[1]),c(LTb,LTd),col=rgb(0,1,0),lwd=1)
lines3d(c(LNb_cos[4],LNd_cos[2]),c(LNb_sin[4],LNd_sin[2]),c(LTb,LTd),col=rgb(0,1,0),lwd=1)

#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/cube_in_dodecahedron19")
```

明らかに「**オイラーの多面体定理**」に基づく作図法とはあくまで異質の座標の取り方ですね。
![cube_with_dodecahedron02.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210613/20210613193801.gif)

```R
library(rgl)

#原蹠(PorTal)
portal_i<-0
portal_j<-0
portal_k<-1
portal_text=paste0("PT(",portal_i,",",portal_j,",",portal_k,")")

#原蹠表示
texts3d(portal_i,portal_j,portal_k,texts=portal_text,col=rgb(0,0,0),adj=1.0)

#対蹠(AntiPordal)
antipordal_i<-0
antipordal_j<-0
antipordal_k<--1
antipordal_text=paste0("AP(",antipordal_i,",",antipordal_j,",",antipordal_k,")" main="Cross section for ")

#対蹠表示
texts3d(antipordal_i,antipordal_j,antipordal_k,texts=antipordal_text,col=rgb(0,0,0),adj=1.0)

#立方対角線(Cubic Diagonal)
lines3d(c(portal_i,antipordal_i),c(portal_j,antipordal_j),c(portal_k,antipordal_k),col=rgb(1,0,0),lwd=2)

###内接する正六面体の描画###

#立方体におけるxy軸上の経度(LoNgitude)座標
CLN0=sin(pi/3)
Cc0<-seq(0,2*pi,length=4)
CLN01_cos<-cos(Cc0)*CLN0
CLN01_sin<-sin(Cc0)*CLN0
CLN02_cos<-cos(Cc0+pi)*CLN0
CLN02_sin<-sin(Cc0+pi)*CLN0

#立方体におけるz軸上の緯度(LaTitude)座標
CLT0=1/3
CAP01=LT0
CAP02=-LT0

#立方体におけるz軸上の緯度(LaTitude)座標
CLT0=1/3
CAP01=CLT0
CAP02=-CLT0

#立方体描写(原蹠から最初の隣点)
lines3d(c(portal_i,CLN01_cos[1]),c(portal_j,CLN01_sin[1]),c(portal_k,CAP01),col=rgb(0,1,0),lwd=1)
lines3d(c(portal_i,CLN01_cos[2]),c(portal_j,CLN01_sin[2]),c(portal_k,CAP01),col=rgb(0,1,0),lwd=1)
lines3d(c(portal_i,CLN01_cos[3]),c(portal_j,CLN01_sin[3]),c(portal_k,CAP01),col=rgb(0,1,0),lwd=1)

#立方体描写(原蹠から最初の隣点)
lines3d(c(antipordal_i,CLN02_cos[1]),c(antipordal_j,CLN02_sin[1]),c(antipordal_k,CAP02),col=rgb(0,1,0),lwd=1)
lines3d(c(antipordal_i,CLN02_cos[2]),c(antipordal_j,CLN02_sin[2]),c(antipordal_k,CAP02),col=rgb(0,1,0),lwd=1)
lines3d(c(antipordal_i,CLN02_cos[3]),c(antipordal_j,CLN02_sin[3]),c(antipordal_k,CAP02),col=rgb(0,1,0),lwd=1)

#立方体描写(中線の結合)
lines3d(c(CLN01_cos[1],CLN02_cos[3],CLN01_cos[2],CLN02_cos[1],CLN01_cos[3],CLN02_cos[2],CLN01_cos[1]),c(CLN01_sin[1],CLN02_sin[3],CLN01_sin[2],CLN02_sin[1],CLN01_sin[3],CLN02_sin[2],CLN01_sin[1]),c(CAP01,CAP02,CAP01,CAP02,CAP01,CAP02,CAP01),col=rgb(0,1,0),lwd=1)

###正十二面体の描画###

#xy軸上の経度(LoNgitude)座標

#最初の頂点３個x2
LN01=sin(1/5*pi)
c0<-seq(0,2*pi,length=4)

#頭蹠側一段目３個
LNa_cos<-cos(c0)*LN01
LNa_sin<-sin(c0)*LN01

#対蹠側一段目３個
LNd_cos<-cos(c0+pi)*LN01
LNd_sin<-sin(c0+pi)*LN01

#中央の頂点6個x2
LN10=sin(2/5*pi)
c00<-seq(0,2*pi,length=4)

#頭蹠側一段目３個
bx00<-cos(c00+pi/2)
by00<-sin(c00+pi/2)
bx01<-cos(c00+pi*2/5+pi/2)
by01<-sin(c00+pi*2/5+pi/2)
bx02<-c(bx00[1],bx01[1],bx00[2],bx01[2],bx00[3],bx01[3],bx00[4])
by02<-c(by00[1],by01[1],by00[2],by01[2],by00[3],by01[3],by00[4])
LNb_cos<-bx02*LN10
LNb_sin<-by02*LN10

#対蹠側一段目３個
cx00<-cos(c00-pi/2)
cy00<-sin(c00-pi/2)
cx01<-cos(c00+pi*2/5-pi/2)
cy01<-sin(c00+pi*2/5-pi/2)
cx02<-c(cx00[1],cx01[1],cx00[2],cx01[2],cx00[3],cx01[3],cx00[4])
cy02<-c(cy00[1],cy01[1],cy00[2],cy01[2],cy00[3],cy01[3],cy00[4])
LNc_cos<-cx02*LN10
LNc_sin<-cy02*LN10

#立方体におけるz軸上の緯度(LaTitude)座標
LTa=4/5
LTb=2/5
LTc=-2/5
LTd=-4/5

#正12面体描写(原蹠から最初の隣点３個へ)
lines3d(c(portal_i,LNa_cos[1]),c(portal_j,LNa_sin[1]),c(portal_k,LTa),col=rgb(0,0,1),lwd=1)
lines3d(c(portal_i,LNa_cos[2]),c(portal_j,LNa_sin[2]),c(portal_k,LTa),col=rgb(0,0,1),lwd=1)
lines3d(c(portal_i,LNa_cos[3]),c(portal_j,LNa_sin[3]),c(portal_k,LTa),col=rgb(0,0,1),lwd=1)

#正12面体描写(対蹠から最初の隣点３個へ)
lines3d(c(antipordal_i,LNd_cos[1]),c(antipordal_j,LNd_sin[1]),c(antipordal_k,LTd),col=rgb(0,0,1),lwd=1)
lines3d(c(antipordal_i,LNd_cos[2]),c(antipordal_j,LNd_sin[2]),c(antipordal_k,LTd),col=rgb(0,0,1),lwd=1)
lines3d(c(antipordal_i,LNd_cos[3]),c(antipordal_j,LNd_sin[3]),c(antipordal_k,LTd),col=rgb(0,0,1),lwd=1)

#正12面体描写(原蹠からの最初の隣点３個から次の隣点６個へ)
lines3d(c(LNa_cos[1],LNb_cos[5]),c(LNa_sin[1],LNb_sin[5]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[1],LNb_cos[6]),c(LNa_sin[1],LNb_sin[6]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[1]),c(LNa_sin[2],LNb_sin[1]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[2]),c(LNa_sin[2],LNb_sin[2]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[3]),c(LNa_sin[3],LNb_sin[3]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[4]),c(LNa_sin[3],LNb_sin[4]),c(LTa,LTb),col=rgb(0,0,1),lwd=1)

#正12面体描写(原蹠からの次の隣点６個からの水平線３本)
lines3d(c(LNb_cos[2],LNb_cos[3]),c(LNb_sin[2],LNb_sin[3]),c(LTb,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[4],LNb_cos[5]),c(LNb_sin[4],LNb_sin[5]),c(LTb,LTb),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[6],LNb_cos[1]),c(LNb_sin[6],LNb_sin[1]),c(LTb,LTb),col=rgb(0,0,1),lwd=1)

#正12面体描写(対蹠からの最初の隣点３個から次の隣点６個へ)
lines3d(c(LNd_cos[1],LNc_cos[5]),c(LNd_sin[1],LNc_sin[5]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[1],LNc_cos[6]),c(LNd_sin[1],LNc_sin[6]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[2],LNc_cos[1]),c(LNd_sin[2],LNc_sin[1]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[2],LNc_cos[2]),c(LNd_sin[2],LNc_sin[2]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[3],LNc_cos[3]),c(LNd_sin[3],LNc_sin[3]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNd_cos[3],LNc_cos[4]),c(LNd_sin[3],LNc_sin[4]),c(LTd,LTc),col=rgb(0,0,1),lwd=1)

#正12面体描写(対蹠からの次の隣点６個からの水平線３本)
lines3d(c(LNc_cos[2],LNc_cos[3]),c(LNc_sin[2],LNc_sin[3]),c(LTc,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNc_cos[4],LNc_cos[5]),c(LNc_sin[4],LNc_sin[5]),c(LTc,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNc_cos[6],LNc_cos[1]),c(LNc_sin[6],LNc_sin[1]),c(LTc,LTc),col=rgb(0,0,1),lwd=1)

#正12面体描写(原蹠からの経路と対蹠からの経路の結合線6本)
lines3d(c(LNb_cos[1],LNc_cos[4]),c(LNb_sin[1],LNc_sin[4]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[2],LNc_cos[5]),c(LNb_sin[2],LNc_sin[5]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[3],LNc_cos[6]),c(LNb_sin[3],LNc_sin[6]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[4],LNc_cos[1]),c(LNb_sin[4],LNc_sin[1]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[5],LNc_cos[2]),c(LNb_sin[5],LNc_sin[2]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)
lines3d(c(LNb_cos[6],LNc_cos[3]),c(LNb_sin[6],LNc_sin[3]),c(LTb,LTc),col=rgb(0,0,1),lwd=1)

#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/cube_with_dodecahedron02")
```
ちなみに**立方体**表面上における「(<font color="blue">右手法・左手法的に</font>)**左右に１回ずつ曲がって原蹠**(<font color="blue">Portal</font>)**から対蹠**(<font color="blue">Antipodal</font>)**に到達する5頂点操作**」が**正十二面体**表面上における「**左右に2回ずつ曲がって原蹠から対蹠に到達する6頂点操作**」に拡張されていく様は「屋根掛け法」でも観測可能ですが、如何せんここに登場する**正六面体**と**正十二面体**は原蹠と対蹠の位置がズレているので、この操作の前後に調整操作を挟まねばなりません。やはり三次元以上の概念が絡むと途端に顕現に難が…
[【Rで球面幾何学】正方形における平方対角線(Square diagonal)と立方体における立方対角線(Cubic diagonal)の関係について。](https://qiita.com/ochimusha01/items/9d899779ff8e814beb41)
![square002.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/f0f13c68-6fe1-495b-d0fb-0c5c4f3a292d.gif)

その一方で(<font color="blue">原蹠と対蹠を結ぶ経路に注目する</font>)球面幾何学側からのアプローチでは「**正四面体を二枚張り合わせた立体**」が出発点となります。
[【Rで球面幾何学】正四面体(Tetrahedron)と正六面体(Cube)と正八面体(Octahedron)と正二十面体(Icosahedron)の狭間。そして正十二面体（Dodecahedron）との関係について。](https://qiita.com/ochimusha01/items/5d30aab4e2e32ef9bcce)
![Tetrahedron07.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/9622164b-5cf0-5b1b-601f-3f09cd0d7380.gif)

**原蹠**あるいは**対蹠**からそれぞれ３方に伸ばされた辺…その閉じてない側の頂点からさらに２辺ずつ伸ばし、**三番目の六角形の断面**に到達するのが以下の形。既に**正十二面体**の「**原蹠あるいは対蹠から５角形が3面伸びる**」特徴が現れてますね。
![Polygon009.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/4d09b418-b615-eb4e-b9df-99f15418daab.gif)

```R
library(rgl)

#原蹠(PorTal)
portal_i<-0
portal_j<-0
portal_k<-1
portal_text=paste0("PT(",portal_i,",",portal_j,",",portal_k,")")

#原蹠表示
texts3d(portal_i,portal_j,portal_k,texts=portal_text,col=rgb(0,0,0),adj=1.0)

#対蹠(AntiPordal)
antipordal_i<-0
antipordal_j<-0
antipordal_k<--1
antipordal_text=paste0("AP(",antipordal_i,",",antipordal_j,",",antipordal_k,")")

#対蹠表示
texts3d(antipordal_i,antipordal_j,antipordal_k,texts=antipordal_text,col=rgb(0,0,0),adj=1.0)

#立方対角線(Cubic Diagonal)
lines3d(c(portal_i,antipordal_i),c(portal_j,antipordal_j),c(portal_k,antipordal_k),col=rgb(1,0,0),lwd=2)

#立方体におけるxy軸上の経度(LoNgitude)座標
LN0=sin(pi/3)
c0<-seq(0,2*pi,length=4)
c1<-seq(0,2*pi,length=7)
LN01_cos<-cos(c0)*LN0
LN01_sin<-sin(c0)*LN0
LN02_cos<-cos(c1-pi/6)*LN0
LN02_sin<-sin(c1-pi/6)*LN0

#立方体におけるz軸上の緯度(LaTitude)座標
LT0=1/3
AP01=LT0
AP02=-LT0

#多面体描写(原蹠から最初の３隣点)
lines3d(c(portal_i,LN01_cos[1]),c(portal_j,LN01_sin[1]),c(portal_k,AP01),col=rgb(0,0,0),lwd=1)
lines3d(c(portal_i,LN01_cos[2]),c(portal_j,LN01_sin[2]),c(portal_k,AP01),col=rgb(0,0,0),lwd=1)
lines3d(c(portal_i,LN01_cos[3]),c(portal_j,LN01_sin[3]),c(portal_k,AP01),col=rgb(0,0,0),lwd=1)

#多面体描写(最初の３隣点から次の6隣点へ)
lines3d(c(LN01_cos[1],LN02_cos[1]),c(LN01_sin[1],LN02_sin[1]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[1],LN02_cos[2]),c(LN01_sin[1],LN02_sin[2]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[2],LN02_cos[3]),c(LN01_sin[2],LN02_sin[3]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[2],LN02_cos[4]),c(LN01_sin[2],LN02_sin[4]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[3],LN02_cos[5]),c(LN01_sin[3],LN02_sin[5]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[3],LN02_cos[6]),c(LN01_sin[3],LN02_sin[6]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)

#多面体描写(底面)
lines3d(c(LN02_cos[1:6],LN02_cos[1]),c(LN02_sin[1:6],LN02_sin[1]),c(AP02,AP02,AP02,AP02,AP02,AP02,AP02),col=rgb(0,0,0),lwd=1)

#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/Polygon009")
```
ところでこの立体も、正四面体同様「**原蹠と対蹠を結ぶ直線が存在しない奇数系図形**」なので２つセットで現れます。
![Twin_Polygon005.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/202f8a73-2259-640c-2c30-5589df8a61a4.gif)

```R
library(rgl)

#原蹠(PorTal)
portal_i<-0
portal_j<-0
portal_k<-1
portal_text=paste0("PT(",portal_i,",",portal_j,",",portal_k,")")

#原蹠表示
texts3d(portal_i,portal_j,portal_k,texts=portal_text,col=rgb(0,0,0),adj=1.0)

#対蹠(AntiPordal)
antipordal_i<-0
antipordal_j<-0
antipordal_k<--1
antipordal_text=paste0("AP(",antipordal_i,",",antipordal_j,",",antipordal_k,")")

#対蹠表示
texts3d(antipordal_i,antipordal_j,antipordal_k,texts=antipordal_text,col=rgb(0,0,0),adj=1.0)

#立方対角線(Cubic Diagonal)
lines3d(c(portal_i,antipordal_i),c(portal_j,antipordal_j),c(portal_k,antipordal_k),col=rgb(1,0,0),lwd=2)

#立方体におけるxy軸上の経度(LoNgitude)座標
LN1=sin(pi/6)
LN2=sin(pi/3)
c0<-seq(0,2*pi,length=4)
c1<-seq(0,2*pi,length=7)
LN01_cos<-cos(c0)*LN1
LN01_sin<-sin(c0)*LN1
LN02_cos<-cos(c1-pi/6)*LN2
LN02_sin<-sin(c1-pi/6)*LN2
RLN01_cos<-cos(c0+pi)*LN1
RLN01_sin<-sin(c0+pi)*LN1
RLN02_cos<-cos(c1-pi/6+pi)*LN2
RLN02_sin<-sin(c1-pi/6+pi)*LN2

#立方体におけるz軸上の緯度(LaTitude)座標
AP01=5/6
AP02=1/3

#正方向多面体描写(原蹠から最初の３隣点)
lines3d(c(portal_i,LN01_cos[1]),c(portal_j,LN01_sin[1]),c(portal_k,AP01),col=rgb(0,0,0),lwd=1)
lines3d(c(portal_i,LN01_cos[2]),c(portal_j,LN01_sin[2]),c(portal_k,AP01),col=rgb(0,0,0),lwd=1)
lines3d(c(portal_i,LN01_cos[3]),c(portal_j,LN01_sin[3]),c(portal_k,AP01),col=rgb(0,0,0),lwd=1)

#正方向多面体描写(最初の３隣点から次の6隣点へ)
lines3d(c(LN01_cos[1],LN02_cos[1]),c(LN01_sin[1],LN02_sin[1]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[1],LN02_cos[2]),c(LN01_sin[1],LN02_sin[2]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[2],LN02_cos[3]),c(LN01_sin[2],LN02_sin[3]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[2],LN02_cos[4]),c(LN01_sin[2],LN02_sin[4]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[3],LN02_cos[5]),c(LN01_sin[3],LN02_sin[5]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(LN01_cos[3],LN02_cos[6]),c(LN01_sin[3],LN02_sin[6]),c(AP01,AP02),col=rgb(0,0,0),lwd=1)

#正方向多面体描写(底面)
lines3d(c(LN02_cos[1:6],LN02_cos[1]),c(LN02_sin[1:6],LN02_sin[1]),c(AP02,AP02,AP02,AP02,AP02,AP02,AP02),col=rgb(0,0,0),lwd=1)

#負方向多面体描写(対蹠から最初の３隣点)
lines3d(c(antipordal_i,RLN01_cos[1]),c(antipordal_j,RLN01_sin[1]),c(antipordal_k,-AP01),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,RLN01_cos[2]),c(antipordal_j,RLN01_sin[2]),c(antipordal_k,-AP01),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,RLN01_cos[3]),c(antipordal_j,RLN01_sin[3]),c(antipordal_k,-AP01),col=rgb(0,0,0),lwd=1)

#負方向多面体描写(最初の３隣点から次の6隣点へ)
lines3d(c(RLN01_cos[1],RLN02_cos[1]),c(RLN01_sin[1],RLN02_sin[1]),c(-AP01,-AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(RLN01_cos[1],RLN02_cos[2]),c(RLN01_sin[1],RLN02_sin[2]),c(-AP01,-AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(RLN01_cos[2],RLN02_cos[3]),c(RLN01_sin[2],RLN02_sin[3]),c(-AP01,-AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(RLN01_cos[2],RLN02_cos[4]),c(RLN01_sin[2],RLN02_sin[4]),c(-AP01,-AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(RLN01_cos[3],RLN02_cos[5]),c(RLN01_sin[3],RLN02_sin[5]),c(-AP01,-AP02),col=rgb(0,0,0),lwd=1)
lines3d(c(RLN01_cos[3],RLN02_cos[6]),c(RLN01_sin[3],RLN02_sin[6]),c(-AP01,-AP02),col=rgb(0,0,0),lwd=1)

#負方向多面体描写(底面)
lines3d(c(RLN02_cos[1:6],RLN02_cos[1]),c(RLN02_sin[1:6],RLN02_sin[1]),c(-AP02,-AP02,-AP02,-AP02,-AP02,-AP02,-AP02),col=rgb(0,0,0),lwd=1)

#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/Twin_Polygon005")
```

イメージ上の操作もここまで到れば**正六面体**同様「**境界線上での辺と面の結びつきの調整**」が自然進行して**正十二面体**が顕現する訳です。
[【Rで球面幾何学】正12面体(Regular Dodecahedron)の作図について。](https://qiita.com/ochimusha01/items/9ce61d7d5a9227235b1e)
![Rplot11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a1b4fe50-4381-c0e6-a00b-70c4d99d930b.png)
![dodecahedron051.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/e1111178-a73e-f381-32f1-a0336af7721a.gif)

ある意味ファインマンの**経路積分**(<font color="blue">Path Integral</font>)的世界観なので「<font color="red">どっちがアルゴリズム的に優れてるか?</font>」とか、そういうのはありません。
[経路積分 - Wikipedia](https://ja.wikipedia.org/wiki/%E7%B5%8C%E8%B7%AF%E7%A9%8D%E5%88%86)
>古典力学（<font color="blue">古典系</font>）では、ある質点の運動の様子（<font color="blue">運動の経路</font>）は初期状態を決めてしまえば後は運動方程式を解くことによって一意的に定まる。一方、量子系では量子的な不確定さ（<font color="blue">量子ゆらぎ</font>）が存在するため、古典系のような一意的な経路の決定はできない。
>量子系で素粒子などの運動の様子を求める方法はいくつか存在するが、その一つとして経路積分による方法がある。
>経路積分の数式では、始点と終点を結ぶ経路は無数にかつ大域的に分布している。それら無数の経路を計算上で合成すると求める結果となる。 経路積分法によって求めた測定値の確率分布は、通常の演算子形式で求めた確率分布と一致する。よって演算子形式と経路積分法は等価な理論である。

#ここまでのまとめ（<font color="blue">全体像の俯瞰</font>）。

そう、まさに**ユークリッド幾何学**と**非ユークリッド幾何学**、**ニュートン力学**と**量子力学**の狭間に登場してくるアレ…現代人は何でもここからの逆算で考えねばならなくなってしまったのですね。
[【Rで射影幾何学】そもそも「幾何学」とは何か？](https://qiita.com/ochimusha01/items/e3e6af4015e15b5777b9)

- (<font color="blue">立体を原蹠と対蹠を結ぶ経路の広がりと規定する</font>)**オイラーの多面体定理**(<font color="blue">Euler's Polyhedron Theorem</font>)<font color="green">Vertex(頂点数)-Edge(辺数)+Face(面数)=2</font>の条件を満たさない立体は三次元上に存在し得ない(<font color="blue">もちろん水面下では色々あり、条件さえ満たされたなら変化は突如として、ほとんど不連続的としか見えない形で訪れる</font>)。
- 原蹠と対蹠を結ぶ経路が存在する**偶数系図形**と異なり、それが存在しない**奇数系図形**は常に2個セットで考える（<font color="blue">そう考えた方が数理上得する事が多い</font>）。
- 二次元上に存在する図形や三次元上に存在する立体は「**可能な限り小さく単純な原理原則への集約を求める**」すなわち平方充填や立体充填の条件を満たしたり正多角形や正多面体に近付こうとする指向性を有していると考える（<font color="blue">そう考えた方が数理上得する事が多い</font>）。

ここでいう「<font color="red">そう考えた方が数理上得する事が多い</font>」は別に教条主義的押し付けではなく(<font color="red">ポパーの反論可能性原則に従って代替案が現れるまで</font>)**むやみやたらと疑い続ける事にまるで意味がない**」というだけの話なのですが…
[【対訳版】ユージン・ウィグナー『自然科学における数学の理不尽なまでの有効性(1959年)』](https://ch.nicovideo.jp/niconicoffee/blomaga/ar1125952)

>第一の点は、〈**数学の概念は、まったく予想外のさまざまな文脈のなかに登場してくる**〉ということ。
<font color="green">The first point is that mathematical concepts turn up in entirely unexpected connections.</font>
>しかも、予想もしなかった文脈に、予想もしなかったほどぴったりと当てはまって、正確に現象を記述してくれることが多いのだ。
<font color="green">Moreover, they often permit an unexpectedly close and accurate description of the phenomena in these connections.</font>
>第二の点は、予想外の文脈に現れるということと、そしてまた、数学がこれほど役立つ理由を私たちが理解していないことのせいで、〈**数学の概念を駆使して、なにか一つの理論が定式化できたとしても、それが唯一の適切な理論なのかどうかがわからない**〉ということ。 
〔<font color="green">Secondly, just because of this circumstance, and because we do not understand the reasons of their usefulness, we cannot know whether a theory formulated in terms of mathematical concepts is uniquely appropriate.</font>
>〔<font color="blue">この二つの論点をさらに言い直すと</font>〕第一の点は〈**数学は自然科学のなかで、ほとんど神秘的なまでに、途方もなく役立っているのに、そのことには何の合理的説明もない**〉ということ。
<font color="green">The first point is that the enormous usefulness of mathematics in the natural sciences is something bordering on the mysterious and that there is no rational explanation for it.</font>
>第二の点は〈**数学の概念の、まさにこの奇怪な有用性のせいで、物理学の理論の一意性が疑わしく思えてしまう**〉ということ。
<font color="green">Second, it is just this uncanny usefulness of mathematical concepts that raises the question of the uniqueness of our physical theories.</font>

「<font color="red">それじゃカオス理論とかどうなるの？</font>」って話ですが、そうした諸研究はあくまで「**かかる大原則の例外となる特定条件とその振る舞いの範囲を明らかにする**」のを目的としてるのであって別に「**ユークリッド以来の幾何学やニュートン以来の物理学に何の意味もなかった事が証明されつつある**」訳でもないんですね。かかる諸概念の総本山ともいうべきラスボスが「(<font color="blue">大数学者オイラーの師匠ベルヌーイが提唱者に擬されている</font>)**大数の法則**(<font color="blue">英LLN=Law of Large Numbers, 仏Loi des grands nombres</font>）」。ここまで疑えば統計学はおろか古代より天文学の恩恵を受けてきた諸学問が根幹から瓦解してしまう最終防衛ラインな訳ですが、19世紀末以降「**文系世界**(<font color="blue">Humanities Bacground Set</font>)」の住人が乱入してきてこれを自らの権威付けに用いたり、逆に党争の種に利用して全面否定に走ったりと「<font color="red">核兵器をジャックナイフやサタデーナイトスペシャル感覚で振り回そうとするチンピラ</font>(<font color="blue">ウィリアム・ギブスン「クローム襲撃（Burning Chrome,1982年）」初出のサイバーパンク文学慣用句</font>)」と化して今日なお傍若無人な振る舞いに出続けている有様。そういう人達に是非認識してもらたいのが「**大数学者ガウス**（<font color="blue">Johann Carl Friedrich Gauß/Carolus Fridericus Gauss、1777年~1855年</font>）**が正規分布の関数化**(<font color="blue">すなわち今日におけるパラメトリック検定概念の基礎樹立</font>)**に成功した歴史時点では、まだ分散**(<font color="blue">Variance ロナルド・フィッシャーが1918年に導入</font>)**の概念など存在していなかった**」辺り。ならば代わりにあったのは？（<font color="blue">ヒント画像を挙げ様としたらQiita Downloaderに全否定された。そんなにヤバい話だった？</font>）
[パラメトリックとノンパラメトリックの違い](https://toukeigaku-jouhou.info/2018/02/24/parametric-nonparametric/)

とりあえず、現時点におけるここでの**球面幾何学**(<font color="blue">Spherical geometry</font>)の話題で登場してくる「**数理の不思議**」は、あくまで原則として「**大数の法則**」に絡まない以下の範囲に限定されています。

①**コイントスを連想させる振動関数**<font color="green">-1^x</font>**の2値展開**…**実数範囲**では頭蹠と対蹠の往復に中間段階が存在しない**原始状態**(<font color="blue">二項展開を図式化したパスカルの三角形における2段目「1,1」</font>)だが、**虚数**(<font color="blue">Imaginary Number</font>)<font color="green">i^2=-1</font>概念を導入すると**正方向範囲**(<font color="blue">+1~0</font>)と**負方向範囲**(<font color="blue">-1~0</font>)それぞれで円を描く(<font color="blue">i^2x。二項展開を図式化したパスカルの三角形における「1,2,1」</font>)。
[【Rで球面幾何学】等比数列(幾何数列)③振動関数を巡る収束と拡散。](https://qiita.com/ochimusha01/items/0814db1de32fbf88d070)
![MOF003.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/5636f1c8-bb24-529a-8991-d305ab03dbdb.gif)

②**各面の中心**（<font color="blue">面心</font>）**を頂点に取り、それらを結んだ結果構成される図形も元と同じ正多角形か正多面体となる双対**(<font color="blue">Duality</font>)概念…途中過程が全く想像不可能で、かつ想像する事に自体に意味がない。
[【Rで球面幾何学】オイラーの多面体定理(Euler's Polyhedron Theorem)と平面充填(Tiling)の連続性について。](https://qiita.com/ochimusha01/items/24a4b51b2c23c47d6aff)

- **平面充填性を備える**(<font color="blue">面を中心に4枚6辺集めると自己相似する</font>)**正三角形と**(<font color="blue">頂点を中心にその正三角形を6舞集めた</font>)**正六角形**(<font color="blue">その面を中心に平面充填性を備える</font>)**の相似**…まさしく「**オイラーの多面体定理**」そのものの実装という感じがする。
- **平面充填性を備える**(<font color="blue">頂点を中心に8個集めた</font>)**正六面体と**(<font color="blue">面を中心に8個集めた</font>)**正方形の自己相似**(<font color="blue">Self Duality</font>)…**原点**<font color="blue">Self Duality</font>0を中心に直交する半直線の積み重ねた**N次元直交座標系**(<font color="blue">Cartesian Coordinate System</font>)や**直積**(<font color="blue">Direct Product</font>)の概念とも絡んでくる分野。このシリーズで本格的に踏み込む展開となるのはまだ先？
- **正四面体の自己双対**(<font color="blue">Self Duality</font>)…正四面体は全５種類ある正多面体のうち唯一の「<font color="red">不安定な</font>」**奇数系図形**(<font color="blue">頭蹠から伸びた図形も対蹠から伸びた図形も反対側まで到達しておらず、常に一対で顕現する</font>)なので展開が飛び抜けて多い。
- **正六面体と正八面体の双対**…断面数と各断面の頂点数の間に往復が存在する(<font color="blue">正八面体が[1,2,1(パスカルの三角形3段目)]、正六面体が[1,3,3,1(パスカルの三角形4段目)]</font>)。
- **正十二面体面体と正二十面体の双対**…断面数と各断面の頂点数の間に往復が存在する(<font color="blue">正二十面体が[1,5,5,1]、正十二面体が[1,3,6,6,3,1]</font>)。

③「<font color="red">いないいないばぁ!!</font>」**挙動**…図形変換の内容も途中過程も全く想像不可能で、かつ想像する事に意味がない。

- **平面充填性を備える正三角形三枚から正四面体へ**…まさしく「**オイラーの多面体定理**」そのものの実装という感じがする。最後の1枚(<font color="blue">底面</font>)が自然に自動的に補完されたものと見做す？
- **一対の正四面体から立方体へ**…まさしく「**オイラーの多面体定理**」そのものの実装という感じがする。他の立方体と異なりハミルトンの四元数への入口が開く。
- **一対の正四面体**(<font color="blue">あるいは3枚の正三角形から</font>)**から正十二面体へ**…まさしく「**オイラーの多面体定理**」そのものの実装という感じがする。この投稿で扱った内容。
- 一対の正四面体(<font color="blue">あるいは4枚の正三角形から</font>)から八面体へ…まさしく「**オイラーの多面体定理**」そのものの実装という感じがする。一方、一対の正四面体からの変遷の場合「**その底辺が必要に応じて**<font color="green">三辺比1:1:sqrt(2)</font>**の二等辺三角形に変貌する可能性**」を想定せざるを得なくなる。そんな場合まで想定しないといけないのか…
- **正三角形5枚から正十二面体へ**…まさしく「**オイラーの多面体定理**」そのものの実装という感じがする。

ほとんどメモ同然で申し訳ありませんが、。大体この辺りの遷移は全貌が見えてきたので、そのうちライブラリ化するかもしれません。もちろん捉え切れてない数理も多いので一筋縄では行かないと思いますが…