「数理演算の基礎」

2019年より着手した「数理再勉強」用の倉庫。

【幾何学の基礎】「正四面体と正八面体の立体充当性」について。

正三角形(Regular Triangle)には角度(60度=2/3πラジアン)の和が360度(ラジアン)となる組み合わせ(6個)がある上、4個の組み合わせが自己相似形となる為、正方形や正六角形(事実上正三角形を6個集めたもの)同様に単独で平面充填(Tiling)性を備える正平面充填形 (Regular Tessellation)に分類されます。

正平面充填形 (Regular Tessellation)に分類される延長線上で一見、正四面体(Regular Tetrahedron)も空間充当Space-filling)性を備えているかの様に見えるのですが…

f:id:ochimusha01:20200207063515p:plain

まずは基本中の基本から。正三角形(Reguler Triangle)は三辺の比2:1:sqrt(3)となる直角三角形(Right Triangle)2つから構成されています。

f:id:ochimusha01:20200207094535p:plain
統計言語Rによる作図例

#分割数Nod(Number of divide)=3

NoD<-3
#円周分割数列(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,col=rgb(0,0,1),type="l",xlim=c(-1,1),ylim=c(-1,1),main="Regular Triangle",xlab="Cos(θ)",ylab="Sin(θ)",lwd=1.2)
par(new=T)
plot(cx_reverse,cy_reverse,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))  #塗りつぶす色

#文字追加
text(cx_nomal,cy_nomal, labels=c("a","b","c"),col=rgb(0,0,1))
text(cx_reverse,cy_reverse, labels=c("a","b","c"),col=rgb(1,0,0))
#補助線と補助文字追加
segments(1,0,-1,0,lty=3,col=rgb(0,0,0))
text(cx_nomal[2],0, labels=c("d"),col=rgb(0,0,1))
text(cx_reverse[2],0, labels=c("d"),col=rgb(1,0,0))

統計言語Rによる作表例

 #三角比(Triangle Ratio)一覧

angle_ac<-c("sqrt(3)","1","1/2")
angle_ad<-c("2","2/sqrt(3)","1/sqrt(3)")
angle_cd<-c("1","1/sqrt(3)","1/(2*sqrt(3))")

library(xtable)
TR01<- data.frame(ac=angle_ac,ad=angle_ad,cd=angle_cd)
print(xtable(TR01),type="html")

  ac ad cd
1 sqrt(3) 2 1
2 1 2/sqrt(3) 1/sqrt(3)
3 1/2 1/sqrt(3) 1/(2*sqrt(3))

 それでは「騙し絵版画家エッシャーMaurits Cornelis Escher, 1898年~1972年)も注目したこの立体図形に注目…

f:id:ochimusha01:20200207044808g:plain

 統計言語Rによる実装例

library(rgl)
#分割数Nod(Number of divide)=3
NoD<-3
#円周分割数列(Sequence of Divided Circumference)
SoDC<-seq(0,2*pi,length=NoD+1)
#座標起点
texts3d(-1,0,0,texts=c("(-1,0,0)"),col=rgb(1,0,0),adj=1.0)
texts3d(1,0,0,texts=c("(1,0,0)"),col=rgb(0,0,1),adj=1.0)
#-1を起点(start point)とする正四面体(Normal(Regular)Tetrahedron)
my<-cos(SoDC)
mz<-sin(SoDC)
mx<-c(1/3,1/3,1/3,1/3)
triangles3d(c(-1,mx[2:3]),c(0,my[2:3]),c(0,mz[2:3]),col=rgb(1,0,0),lwd=1)
triangles3d(c(mx[1],-1,mx[3]),c(my[1],0,my[3]),c(mz[1],0,mz[3]),col=rgb(1,0,0),lwd=1)
triangles3d(c(mx[1:2],-1),c(my[1:2],0),c(mz[1:2],0),col=rgb(1,0,0),lwd=1)
triangles3d(mx[1:3],my[1:3],mz[1:3],col=rgb(1,0,0),lwd=1)
#1を起点(start point)とする逆正四面体(Reverse(Regular)Tetrahedron)
py<-cos(SoDC+pi)
pz<-sin(SoDC+pi)
px<-c(-1/3,-1/3,-1/3,-1/3)
triangles3d(c(1,px[2:3]),c(0,py[2:3]),c(0,pz[2:3]),col=rgb(0,0,1),lwd=1)
triangles3d(c(px[1],1,px[3]),c(py[1],0,py[3]),c(pz[1],0,pz[3]),col=rgb(0,0,1),lwd=1)
triangles3d(c(px[1:2],1),c(py[1:2],0),c(pz[1:2],0),col=rgb(0,0,1),lwd=1)
triangles3d(px[1:3],py[1:3],pz[1:3],col=rgb(0,0,1),lwd=1)

#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="C:/Users/81806/Desktop/Markdown/Tetrahedron03")

あれ、空間充当してる? 透視図化すると胡麻化してる箇所が浮かび上がってきます。要するに隠された奥部で図形が重なってしまってるんですね。

f:id:ochimusha01:20200207022654g:plain

統計言語Rによる実装例

library(rgl)
#分割数Nod(Number of divide)=3
NoD<-3
#円周分割数列(Sequence of Divided Circumference)
SoDC<-seq(0,2*pi,length=NoD+1)
#座標起点
texts3d(-1,0,0,texts=c("(-1,0,0)"),col=rgb(1,0,0),adj=1.0)
texts3d(1,0,0,texts=c("(1,0,0)"),col=rgb(0,0,1),adj=1.0)
#texts3d(-5/3,0,0,texts=c("(-5/3,0,0)"),col=rgb(0,0,1),adj=1.0)
#texts3d(5/3,0,0,texts=c("(5/3,0,0)"),col=rgb(1,0,0),adj=1.0)
#-1を起点(start point)とする正四面体(Normal(Regular)Tetrahedron)
my<-cos(SoDC)
mz<-sin(SoDC)
mx<-c(1/3,1/3,1/3,1/3)
lines3d(c(-1,mx[1]),c(0,my[1]),c(0,mz[1]),col=rgb(1,0,0),lwd=1)
lines3d(c(-1,mx[2]),c(0,my[2]),c(0,mz[2]),col=rgb(1,0,0),lwd=1)
lines3d(c(-1,mx[3]),c(0,my[3]),c(0,mz[3]),col=rgb(1,0,0),lwd=1)
triangles3d(mx[1:3],my[1:3],mz[1:3],col=rgb(1,0,0),lwd=1)
#lines3d(c(mx[1],mx[2]),c(my[1],my[2]),c(mz[1],mz[2]),col=rgb(1,0,0),lwd=1)
#lines3d(c(mx[2],mx[3]),c(my[2],my[3]),c(mz[2],mz[3]),col=rgb(1,0,0),lwd=1)
#lines3d(c(mx[3],mx[1]),c(my[3],my[1]),c(mz[3],mz[1]),col=rgb(1,0,0),lwd=1)
#lines3d(c(5/3,mx[1]),c(0,my[1]),c(0,mz[1]),col=rgb(1,0,0),lwd=1)

#lines3d(c(5/3,mx[2]),c(0,my[2]),c(0,mz[2]),col=rgb(1,0,0),lwd=1)
#lines3d(c(5/3,mx[3]),c(0,my[3]),c(0,mz[3]),col=rgb(1,0,0),lwd=1)

#1を起点(start point)とする逆正四面体(Reverse(Regular)Tetrahedron)
py<-cos(SoDC+pi)
pz<-sin(SoDC+pi)
px<-c(-1/3,-1/3,-1/3,-1/3)
lines3d(c(1,px[1]),c(0,py[1]),c(0,pz[1]),col=rgb(0,0,1),lwd=1)
lines3d(c(1,px[2]),c(0,py[2]),c(0,pz[2]),col=rgb(0,0,1),lwd=1)
lines3d(c(1,px[3]),c(0,py[3]),c(0,pz[3]),col=rgb(0,0,1),lwd=1)
triangles3d(px[1:3],py[1:3],pz[1:3],col=rgb(0,0,1),lwd=1)
#lines3d(c(px[1],px[2]),c(py[1],py[2]),c(pz[1],pz[2]),col=rgb(1,0,0),lwd=1)
#lines3d(c(px[2],px[3]),c(py[2],py[3]),c(pz[2],pz[3]),col=rgb(1,0,0),lwd=1)
#lines3d(c(px[3],px[1]),c(py[3],py[1]),c(pz[3],pz[1]),col=rgb(1,0,0),lwd=1)
#lines3d(c(-5/3,px[1]),c(0,py[1]),c(0,pz[1]),col=rgb(1,0,0),lwd=1)

#lines3d(c(-5/3,px[2]),c(0,py[2]),c(0,pz[2]),col=rgb(1,0,0),lwd=1)
#lines3d(c(-5/3,px[3]),c(0,py[3]),c(0,pz[3]),col=rgb(1,0,0),lwd=1)

#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="C:/Users/81806/Desktop/Markdown/Tetrahedron01")

2個連ねるとさらにピッチのズレがさらに明瞭に見て取れます。

f:id:ochimusha01:20200207021516g:plain

統計言語Rによる実装例

library(rgl)
#分割数Nod(Number of divide)=3
NoD<-3
#円周分割数列(Sequence of Divided Circumference)
SoDC<-seq(0,2*pi,length=NoD+1)
#座標起点
texts3d(-1,0,0,texts=c("(-1,0,0)"),col=rgb(1,0,0),adj=1.0)
texts3d(1,0,0,texts=c("(1,0,0)"),col=rgb(0,0,1),adj=1.0)
texts3d(-5/3,0,0,texts=c("(-5/3,0,0)"),col=rgb(0,0,1),adj=1.0)
texts3d(5/3,0,0,texts=c("(5/3,0,0)"),col=rgb(1,0,0),adj=1.0)
#-1を起点(start point)とする正四面体(Normal(Regular)Tetrahedron)
my<-cos(SoDC)
mz<-sin(SoDC)
mx<-c(1/3,1/3,1/3,1/3)
lines3d(c(-1,mx[1]),c(0,my[1]),c(0,mz[1]),col=rgb(1,0,0),lwd=1)
lines3d(c(-1,mx[2]),c(0,my[2]),c(0,mz[2]),col=rgb(1,0,0),lwd=1)
lines3d(c(-1,mx[3]),c(0,my[3]),c(0,mz[3]),col=rgb(1,0,0),lwd=1)
triangles3d(mx[1:3],my[1:3],mz[1:3],col=rgb(1,0,0),lwd=1)
#lines3d(c(mx[1],mx[2]),c(my[1],my[2]),c(mz[1],mz[2]),col=rgb(1,0,0),lwd=1)
#lines3d(c(mx[2],mx[3]),c(my[2],my[3]),c(mz[2],mz[3]),col=rgb(1,0,0),lwd=1)
#lines3d(c(mx[3],mx[1]),c(my[3],my[1]),c(mz[3],mz[1]),col=rgb(1,0,0),lwd=1)
lines3d(c(5/3,mx[1]),c(0,my[1]),c(0,mz[1]),col=rgb(1,0,0),lwd=1)
lines3d(c(5/3,mx[2]),c(0,my[2]),c(0,mz[2]),col=rgb(1,0,0),lwd=1)
lines3d(c(5/3,mx[3]),c(0,my[3]),c(0,mz[3]),col=rgb(1,0,0),lwd=1)

#1を起点(start point)とする逆正四面体(Reverse(Regular)Tetrahedron)
py<-cos(SoDC+pi)
pz<-sin(SoDC+pi)
px<-c(-1/3,-1/3,-1/3,-1/3)
lines3d(c(1,px[1]),c(0,py[1]),c(0,pz[1]),col=rgb(0,0,1),lwd=1)
lines3d(c(1,px[2]),c(0,py[2]),c(0,pz[2]),col=rgb(0,0,1),lwd=1)
lines3d(c(1,px[3]),c(0,py[3]),c(0,pz[3]),col=rgb(0,0,1),lwd=1)
triangles3d(px[1:3],py[1:3],pz[1:3],col=rgb(0,0,1),lwd=1)
#lines3d(c(px[1],px[2]),c(py[1],py[2]),c(pz[1],pz[2]),col=rgb(1,0,0),lwd=1)
#lines3d(c(px[2],px[3]),c(py[2],py[3]),c(pz[2],pz[3]),col=rgb(1,0,0),lwd=1)
#lines3d(c(px[3],px[1]),c(py[3],py[1]),c(pz[3],pz[1]),col=rgb(1,0,0),lwd=1)

lines3d(c(-5/3,px[1]),c(0,py[1]),c(0,pz[1]),col=rgb(0,0,1),lwd=1)
lines3d(c(-5/3,px[2]),c(0,py[2]),c(0,pz[2]),col=rgb(0,0,1),lwd=1)
lines3d(c(-5/3,px[3]),c(0,py[3]),c(0,pz[3]),col=rgb(0,0,1),lwd=1)

#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="C:/Users/81806/Desktop/Markdown/Tetrahedron02")

とはいえ「あと一工夫で何とかなりそう」に見えるのもまた事実。

T:三角形を2倍に拡大すると面積は4倍になります。図で示すと一目瞭然です。
f:id:ochimusha01:20200207062118p:plain
つまり真ん中の三角形が中点連結定理(midpoint(connector)theorem)で合同となり、相似比1:2だから面積比1^2:2^2=1:4となるからです。では、立体だったらどうでしょう。正四面体(regular tetrahedron)で考えてみましょう。

4枚の合同な正三角形を面とする四面体である。

  • 面数4辺数6頂点数4。これらは全て多面体で最少である。また、パスカルの三角形の第5段2~4番目の数字でもある。
  • 頂点形状は正三角形であり、3本の辺と3枚の正三角形が集まる。これらはパスカルの三角形の第4段2、3番目の数字である。
  • 立方体(regular hexahedron) (±1, ±1, ±1) の4つの頂点 (1,1,1), (1,-1,-1), (-1,1,-1), (-1,-1,1) を結べば正四面体になる。

  • 正四面体の辺の中点を結べば、正八面体(regular octahedron)になる。このとき4個の正四面体ができる。逆に正八面体の互い違いの4面を延長すると、正四面体になる。
  • 単独で空間充填は出来ないが、正八面体と組み合わせた空間充填は可能である。

展開図は2通りあり、一方は正三角形、もう一方は平行四辺形になる。

f:id:ochimusha01:20200207070342p:plain

自らと双対(dual, duality)である(自己双対多面体)。

また対角線が存在しない。

正四面体の各辺を2倍にします。同じ大きさの正四面体を何個か作り並べてみます。体積比1^3:2^3=1:8ですから8個の正四面体が入るはずです。
f:id:ochimusha01:20200207064135p:plain

写真のように正四面体を3個並べて真ん中に4個目を置いてみます。この上に正四面体のせようとしても上手くいきません。正四面体を隙間無く充填することはできないのです。そこで、真ん中の正四面体を取り、代わりにどんな立体が入るのか考えてみましょう…そうです、ずばり正八面体(regular octahedron)です。

f:id:ochimusha01:20200207065003p:plain

正多面体の一種であり、空間を8枚の正三角形で囲んだ立体である。

正多面体のひとつの正六面体のすべての頂点まわりを各面の中心まで切頂することによって得られる(双対関係)。

正四面体の各頂点を辺の中心まで切り落とした形でもある。 

S:立体では中点連結の定理は成り立たないのですね。合同で縦にも横にも上にも拡げて行ける合同な四面体ってあるのかな。
T:実は、そういう四面体があるのです。この展開図を見てください。
《2:√3:√3》の三角形で作る四面体です。
f:id:ochimusha01:20200207061537p:plain
S:並べてみよう。・・・確かにすきまなく積みあげることができる。
S:ちゃんと8個で2倍の三角錐ができた。

まさにこれ…

テトラパック(Tetra Pak) - Wikipedia

食品用紙容器の開発・製造を主たる業務とする国際企業。創業の地であるスウェーデンのルンドに本社を置く。創業者はルーベン・ラウジング。「テトラパック」及び「Tetra Pak」はこの会社の登録商標である。同社が開発して製造する四面体型紙容器の旧名称で、現在は「テトラ・クラシック (TC)」と称する。

現在は四角い「テトラ・ブリック (TB)」や屋根型の「テトラ・レックス (TR)」なども手がける、飲料用紙容器と充填包装システムで有数の企業である。主力商品の「テトラ・ブリック・アセプティック」は常温で長期保存を可能とし、日本の国外へ向けた豆腐などが採用している。

テトラ・クラシック

日本で三角パックと多く俗称される「テトラ・クラシック」は1944年3月27日に特許がおり、1952年に当社が発売した飲料用紙容器である。三角形の形状はピラミッド型の四角錐と誤解も多いが、実際は四面体の三角錐で、名称の"Tetra"も「4」の意味である。単位容積あたりの包装材が廃棄分や糊代を算入すると最小となり、一枚の長い紙で製造できる利点と、輸送に六角形の専用ケースを要する欠点がある。

現在は輸送や店頭の陳列で利点が多いブリックタイプが主流となり、採用例が減少して日本テトラパックは国内の販売を2004年6月から休止していたが、2014年7月に10年ぶりに販売を再開した。

 以下続報…