【下書きNOTE】デカルト空間における正方形の平行対角線と立方体における立方対角線の作図例

立方体(Square)における平行対角線(6面x2=12)と立方対角線(3次元) 
![20200210060711.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/9234b8e1-e43f-1399-7e2f-9736700565a1.gif)

```R
library(rgl)
#頂点座標=8個
texts3d(0,0,0,texts=c("(0,0,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,0,0,texts=c("(1,0,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(0,1,0,texts=c("(0,1,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,1,0,texts=c("(1,1,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(0,0,1,texts=c("(0,0,1)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,0,1,texts=c("(1,0,1)"),col=rgb(0,0,0),adj=1.0)
texts3d(0,1,1,texts=c("(0,1,1)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,1,1,texts=c("(1,1,1)"),col=rgb(0,0,0),adj=1.0)
#正六面体(Square)本体=6面

lines3d(c(0,1,1,0,0),c(0,0,1,1,0),c(0,0,0,0,0),col=rgb(0,0,0),lwd=1)
lines3d(c(0,1,1,0,0),c(0,0,1,1,0),c(1,1,1,1,1),col=rgb(0,0,0),lwd=1)
lines3d(c(0,0),c(0,0),c(0,1),col=rgb(0,0,0),lwd=1)
lines3d(c(1,1),c(0,0),c(0,1),col=rgb(0,0,0),lwd=1)
lines3d(c(0,0),c(1,1),c(0,1),col=rgb(0,0,0),lwd=1)
lines3d(c(1,1),c(1,1),c(0,1),col=rgb(0,0,0),lwd=1)

#平方対角線(長さsqrt(2))=6面*2=12本
lines3d(c(0,1),c(0,1),c(0,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,0),c(0,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(0,1),c(1,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,0),c(0,1),c(0,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,0),c(1,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,0),c(0,1),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(0,0),c(0,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(0,0),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(1,1),c(0,1),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(1,1),c(0,1),c(0,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,1),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,1),c(0,1),col=rgb(0,1,0),lwd=1)

#立方対角線(長さsqrt(3))=3本

lines3d(c(0,1),c(0,1),c(0,1),col=rgb(0,0,1),lwd=1)
lines3d(c(0,1),c(1,0),c(1,0),col=rgb(0,0,1),lwd=1)
lines3d(c(0,1),c(0,1),c(1,0),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/square001") 
```
おや、もっと分割出来そうです。まずは半分に分割してみましょう。
![20200211083924.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/efa5f6fe-e20b-7e91-8eed-7551804eb5fa.gif)

```R
library(rgl)
#頂点座標=8個
texts3d(0,0,0,texts=c("(0,0,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,0,0,texts=c("(1,0,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(0,1,0,texts=c("(0,1,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,1,0,texts=c("(1,1,0)"),col=rgb(0,0,0),adj=1.0)
texts3d(0,0,1,texts=c("(0,0,1)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,0,1,texts=c("(1,0,1)"),col=rgb(0,0,0),adj=1.0)
texts3d(0,1,1,texts=c("(0,1,1)"),col=rgb(0,0,0),adj=1.0)
texts3d(1,1,1,texts=c("(1,1,1)"),col=rgb(0,0,0),adj=1.0)
#頂点間中点=1+6+12=19個
texts3d(0.5,0.5,0.5,texts=c("(0.5,0.5,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0,0.5,0.5,texts=c("(0,0.5,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,0,0.5,texts=c("(0.5,0,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,0.5,0,texts=c("(0.5,0.5,0)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(1,0.5,0.5,texts=c("(1,0.5,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,1,0.5,texts=c("(0.5,1,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,0.5,1,texts=c("(0.5,0.5,1)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,0,0,texts=c("(0.5,0,0)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,0,1,texts=c("(0.5,0,1)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,1,0,texts=c("(0.5,1,0)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0.5,1,1,texts=c("(0.5,1,1)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0,0.5,0,texts=c("(0,0.5,0)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0,0.5,1,texts=c("(0,0.5,1)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(1,0.5,0,texts=c("(0.5,1,0)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(1,0.5,1,texts=c("(0.5,1,1)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0,0,0.5,texts=c("(0,0,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(0,1,0.5,texts=c("(0,1,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(1,0,0.5,texts=c("(1,0,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(1,1,0.5,texts=c("(1,1,0.5)"),col=c(200,200,200),adj=1.0,cex=0.5)
#正六面体(Square)本体=6面

lines3d(c(0,1,1,0,0),c(0,0,1,1,0),c(0,0,0,0,0),col=rgb(0,0,0),lwd=1)
lines3d(c(0,1,1,0,0),c(0,0,1,1,0),c(1,1,1,1,1),col=rgb(0,0,0),lwd=1)
lines3d(c(0,0),c(0,0),c(0,1),col=rgb(0,0,0),lwd=1)
lines3d(c(1,1),c(0,0),c(0,1),col=rgb(0,0,0),lwd=1)
lines3d(c(0,0),c(1,1),c(0,1),col=rgb(0,0,0),lwd=1)
lines3d(c(1,1),c(1,1),c(0,1),col=rgb(0,0,0),lwd=1)
#頂点間中線=3+12=15本
lines3d(c(1,0),c(0.5,0.5),c(0.5,0.5),col=c(200,200,200),lwd=1)
lines3d(c(0.5,0.5),c(1,0),c(0.5,0.5),col=c(200,200,200),lwd=1)
lines3d(c(0.5,0.5),c(0.5,0.5),c(1,0),col=c(200,200,200),lwd=1)
lines3d(c(0,1,1,0,0),c(0,0,1,1,0),c(0.5,0.5,0.5,0.5,0.5),col=c(200,200,200),lwd=1)
lines3d(c(0.5,0.5,0.5,0.5,0.5),c(0,1,1,0,0),c(0,0,1,1,0),col=c(200,200,200),lwd=1)
lines3d(c(0,1,1,0,0),c(0.5,0.5,0.5,0.5,0.5),c(0,0,1,1,0),col=c(200,200,200),lwd=1)

#平方対角線(長さsqrt(2))=6面*2=12本
lines3d(c(0,1),c(0,1),c(0,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,0),c(0,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(0,1),c(1,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,0),c(0,1),c(0,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,0),c(1,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,0),c(0,1),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(0,0),c(0,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(0,0),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(1,1),c(0,1),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(1,1),c(0,1),c(0,1),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,1),c(1,0),col=rgb(0,1,0),lwd=1)
lines3d(c(0,1),c(1,1),c(0,1),col=rgb(0,1,0),lwd=1)

#立方対角線(長さsqrt(3))=3個

lines3d(c(0,1),c(0,1),c(0,1),col=rgb(0,0,1),lwd=1)
lines3d(c(0,1),c(1,0),c(1,0),col=rgb(0,0,1),lwd=1)
lines3d(c(0,1),c(0,1),c(1,0),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/square003") 
```
正六面体は立方数(Cubric Number)a[N]={1,8,1, 8, 27, 64, 125…N^3}集めて組み合わせると自己相似形となります。これを試す為、まず上掲プログラムの数値を抽象化して関数化します。まずは抽象化と関数化…

```R
library(rgl)

#mo(Minus One),cp(Center Point),po(Plus One)
cube_draw01<-function(m,c,p){
#座標(Coordinate)合成関数Cd
cd<-function(a,b,c){paste0("(",a,",",b,",",c,")")}
#頂点座標=8個
texts3d(m,m,m,texts=cd(m,m,m),col=rgb(0,0,0),adj=1.0)
texts3d(p,m,m,texts=cd(p,m,m),col=rgb(0,0,0),adj=1.0)
texts3d(m,p,m,texts=cd(m,p,m),col=rgb(0,0,0),adj=1.0)
texts3d(p,p,m,texts=cd(p,p,m),col=rgb(0,0,0),adj=1.0)
texts3d(m,m,p,texts=cd(m,m,p),col=rgb(0,0,0),adj=1.0)
texts3d(p,m,p,texts=cd(p,m,p),col=rgb(0,0,0),adj=1.0)
texts3d(m,p,p,texts=cd(m,p,p),col=rgb(0,0,0),adj=1.0)
texts3d(p,p,p,texts=cd(p,p,p),col=rgb(0,0,0),adj=1.0)
#頂点間中点=1+6+12=19個
texts3d(c,c,c,texts=cd(c,c,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(m,c,c,texts=cd(m,c,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,m,c,texts=cd(c,m,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,c,m,texts=cd(c,c,m),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(p,c,c,texts=cd(p,c,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,p,c,texts=cd(c,p,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,c,p,texts=cd(c,c,p),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,m,m,texts=cd(c,m,m),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,m,p,texts=cd(c,m,p),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,p,m,texts=cd(c,p,m),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(c,p,p,texts=cd(c,p,p),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(m,c,m,texts=cd(m,c,m),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(m,c,p,texts=cd(m,c,p),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(p,c,m,texts=cd(p,c,m),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(p,c,p,texts=cd(p,c,p),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(m,m,c,texts=cd(m,m,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(m,p,c,texts=cd(m,p,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(p,m,c,texts=cd(p,m,c),col=c(200,200,200),adj=1.0,cex=0.5)
texts3d(p,p,c,texts=cd(p,p,c),col=c(200,200,200),adj=1.0,cex=0.5)
#正六面体(Square)本体=6面

lines3d(c(m,p,p,m,m),c(m,m,p,p,m),c(m,m,m,m,m),col=rgb(0,0,0),lwd=1)
lines3d(c(m,p,p,m,m),c(m,m,p,p,m),c(p,p,p,p,p),col=rgb(0,0,0),lwd=1)
lines3d(c(m,m),c(m,m),c(m,p),col=rgb(0,0,0),lwd=1)
lines3d(c(p,p),c(m,m),c(m,p),col=rgb(0,0,0),lwd=1)
lines3d(c(m,m),c(p,p),c(m,p),col=rgb(0,0,0),lwd=1)
lines3d(c(p,p),c(p,p),c(m,p),col=rgb(0,0,0),lwd=1)
#頂点間中線=3+12=15本
lines3d(c(p,m),c(c,c),c(c,c),col=c(200,200,200),lwd=1)
lines3d(c(c,c),c(p,m),c(c,c),col=c(200,200,200),lwd=1)
lines3d(c(c,c),c(c,c),c(p,m),col=c(200,200,200),lwd=1)
lines3d(c(c,c,c,c,c),c(m,p,p,m,m),c(m,m,p,p,m),col=c(200,200,200),lwd=1)
lines3d(c(m,p,p,m,m),c(c,c,c,c,c),c(m,m,p,p,m),col=c(200,200,200),lwd=1)
lines3d(c(m,p,p,m,m),c(m,m,p,p,m),c(c,c,c,c,c),col=c(200,200,200),lwd=1)
#平方対角線(長さsqrt(2))=6面*2=12本
lines3d(c(m,p),c(m,p),c(m,m),col=rgb(0,1,0),lwd=1)
lines3d(c(m,p),c(p,m),c(m,m),col=rgb(0,1,0),lwd=1)
lines3d(c(m,p),c(m,p),c(p,p),col=rgb(0,1,0),lwd=1)
lines3d(c(m,m),c(m,p),c(m,p),col=rgb(0,1,0),lwd=1)
lines3d(c(m,p),c(p,m),c(p,p),col=rgb(0,1,0),lwd=1)
lines3d(c(m,m),c(m,p),c(p,m),col=rgb(0,1,0),lwd=1)
lines3d(c(m,p),c(m,m),c(m,p),col=rgb(0,1,0),lwd=1)
lines3d(c(m,p),c(m,m),c(p,m),col=rgb(0,1,0),lwd=1)
lines3d(c(p,p),c(m,p),c(p,m),col=rgb(0,1,0),lwd=1)
lines3d(c(p,p),c(m,p),c(m,p),col=rgb(0,1,0),lwd=1)
lines3d(c(m,p),c(p,p),c(p,m),col=rgb(0,1,0),lwd=1)
lines3d(c(m,p),c(p,p),c(m,p),col=rgb(0,1,0),lwd=1)

#立方対角線(長さsqrt(3))=3個

lines3d(c(m,p),c(m,p),c(m,p),col=rgb(0,0,1),lwd=1)
lines3d(c(m,p),c(p,m),c(p,m),col=rgb(0,0,1),lwd=1)
lines3d(c(m,p),c(m,p),c(p,m),col=rgb(0,0,1),lwd=1)
}
'''
まずは元プログラムの設定で。同じ内容が出力される。
![20200211103818.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0fc41426-0a19-0145-d563-11f4c429e7fa.gif)

```R
cube_draw01(0,0.5,1)
#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="C:/Users/81806/Desktop/Markdown/cube001")
```
今度は原点を(0,0,0)とし数字を倍に設定してみる。
![20200211103956.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/caa44670-dd01-c6ff-199d-0e8eef998992.gif)

```R
cube_draw01(-1,0,1)
#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="C:/Users/81806/Desktop/Markdown/cube002")
```
重ねてみる（ゴチャゴチャして見難いが「こんな感じで8個並ぶ」イメージさえ掴めればOK）。
![20200211105505.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/93ca7a46-ffa0-5195-c023-b279f3f45b06.gif)

```R
cube_draw01(-1,0,1)
cube_draw01(-1,-0.5,0)
cube_draw01(0,0.5,1)
#アニメーション
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="C:/Users/81806/Desktop/Markdown/cube003")
```
とりあえず以下続報…