0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【オイラーの多面体定理と正多面体】正20面体(Regular Icosahedron)の作図について。

Last updated at Posted at 2020-04-16

【Rで球面幾何学】正方形における平方対角線(Square diagonal)と立方体における立方対角線(Cubic diagonal)の関係について。
square002.gif
この考え方を応用すると正20面体(Regular Icosahedron)の作図が可能となります。
正二十面体 - Wikipedia
icosahedron009.gif

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)座標

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

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

#対蹠側一段目5個
LNb_cos<-cos(c0+pi)*LN01
LNb_sin<-sin(c0+pi)*LN01

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

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

#正20面体描写(原蹠からの次の隣点5個からの水平線5本)
lines3d(c(LNa_cos[1],LNa_cos[2]),c(LNa_sin[1],LNa_sin[2]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[2],LNa_cos[3]),c(LNa_sin[2],LNa_sin[3]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[3],LNa_cos[4]),c(LNa_sin[3],LNa_sin[4]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[4],LNa_cos[5]),c(LNa_sin[4],LNa_sin[5]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[5],LNa_cos[1]),c(LNa_sin[5],LNa_sin[1]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)

#正20面体描写(対蹠から最初の隣点5個へ)
lines3d(c(antipordal_i,LNb_cos[1]),c(antipordal_j,LNb_sin[1]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[2]),c(antipordal_j,LNb_sin[2]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[3]),c(antipordal_j,LNb_sin[3]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[4]),c(antipordal_j,LNb_sin[4]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[5]),c(antipordal_j,LNb_sin[5]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)

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

#正20面体描写(原蹠からの経路と対蹠からの経路の結合線10本)
lines3d(c(LNa_cos[1],LNb_cos[4]),c(LNa_sin[1],LNb_sin[4]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[1],LNb_cos[3]),c(LNa_sin[1],LNb_sin[3]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[5],LNb_cos[3]),c(LNa_sin[5],LNb_sin[3]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[5],LNb_cos[2]),c(LNa_sin[5],LNb_sin[2]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[4],LNb_cos[2]),c(LNa_sin[4],LNb_sin[2]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[4],LNb_cos[1]),c(LNa_sin[4],LNb_sin[1]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[1]),c(LNa_sin[3],LNb_sin[1]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[5]),c(LNa_sin[3],LNb_sin[5]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[5]),c(LNa_sin[2],LNb_sin[5]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[4]),c(LNa_sin[2],LNb_sin[4]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)

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

ちなみ正二十面体には立方体角線=対蹠のセットが他に5個あり、どれを選んでも同じ結果となります。
icosahedron001.gif

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)座標

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

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

#対蹠側一段目5個
LNb_cos<-cos(c0+pi)*LN01
LNb_sin<-sin(c0+pi)*LN01

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

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

#正20面体描写(原蹠からの次の隣点5個からの水平線5本)
lines3d(c(LNa_cos[1],LNa_cos[2]),c(LNa_sin[1],LNa_sin[2]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[2],LNa_cos[3]),c(LNa_sin[2],LNa_sin[3]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[3],LNa_cos[4]),c(LNa_sin[3],LNa_sin[4]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[4],LNa_cos[5]),c(LNa_sin[4],LNa_sin[5]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[5],LNa_cos[1]),c(LNa_sin[5],LNa_sin[1]),c(LTa,LTa),col=rgb(0,0,0),lwd=1)

#正20面体描写(対蹠から最初の隣点5個へ)
lines3d(c(antipordal_i,LNb_cos[1]),c(antipordal_j,LNb_sin[1]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[2]),c(antipordal_j,LNb_sin[2]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[3]),c(antipordal_j,LNb_sin[3]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[4]),c(antipordal_j,LNb_sin[4]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(antipordal_i,LNb_cos[5]),c(antipordal_j,LNb_sin[5]),c(antipordal_k,LTb),col=rgb(0,0,0),lwd=1)

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

#正20面体描写(原蹠からの経路と対蹠からの経路の結合線10本)
lines3d(c(LNa_cos[1],LNb_cos[4]),c(LNa_sin[1],LNb_sin[4]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[1],LNb_cos[3]),c(LNa_sin[1],LNb_sin[3]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[5],LNb_cos[3]),c(LNa_sin[5],LNb_sin[3]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[5],LNb_cos[2]),c(LNa_sin[5],LNb_sin[2]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[4],LNb_cos[2]),c(LNa_sin[4],LNb_sin[2]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[4],LNb_cos[1]),c(LNa_sin[4],LNb_sin[1]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[1]),c(LNa_sin[3],LNb_sin[1]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[5]),c(LNa_sin[3],LNb_sin[5]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[5]),c(LNa_sin[2],LNb_sin[5]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[4]),c(LNa_sin[2],LNb_sin[4]),c(LTa,LTb),col=rgb(0,0,0),lwd=1)

立方体角線
lines3d(c(LNa_cos[1],LNb_cos[1]),c(LNa_sin[1],LNb_sin[1]),c(LTa,LTb),col=rgb(0,1,0),lwd=1)
lines3d(c(LNa_cos[2],LNb_cos[2]),c(LNa_sin[2],LNb_sin[2]),c(LTa,LTb),col=rgb(0,1,0),lwd=1)
lines3d(c(LNa_cos[3],LNb_cos[3]),c(LNa_sin[3],LNb_sin[3]),c(LTa,LTb),col=rgb(0,1,0),lwd=1)
lines3d(c(LNa_cos[4],LNb_cos[4]),c(LNa_sin[4],LNb_sin[4]),c(LTa,LTb),col=rgb(0,1,0),lwd=1)
lines3d(c(LNa_cos[5],LNb_cos[5]),c(LNa_sin[5],LNb_sin[5]),c(LTa,LTb),col=rgb(0,1,0),lwd=1)

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

双対Duality)…(それぞれ五方向に伸びる)頂点と(それぞれ三角形を成す)の関係を入れ替えると正十二面体(Regular Dodecahedron)になります。
【Rで球面幾何学】正12面体(Regular Dodecahedron)の作図について。
dodecahedron051.gif
以下続報…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?