【トーラス構造と古典数学】「単位円筒」から「トーラス構造」へ

今回の投稿の出発点はこれ。
[【初心者向け】物理学における「単位円筒(Unit Cylinder)」の概念について。](https://qiita.com/ochimusha01/items/ced1c21b4411e79cdcbe)
![20191018074109.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/68a7e8d5-12b4-df21-12ff-21f869ab6d19.gif)
**XY軸**（<font color=blue>円弧</font>）
![20191018074133.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/7418c2ee-5767-66da-0cbc-987de17d0ae4.png)
**ZX軸**（<font color=blue>Cos波</font>）
![20191101090256.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/7d78c481-d0a6-daae-50ac-d6b04364e849.png)
**ZY軸**（<font color=blue>Sin波</font>）
![20191101090408.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/84f6d609-af92-8eb7-4626-8c31b3a598b5.png)
[【初心者向け】「単位円筒」から「単位球面」へ](https://qiita.com/ochimusha01/items/08f5c5ad1aba4a59a27d)
![20191101180804.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/8b0cb38b-990b-c5bf-9359-f81d2ec6b3c9.gif)
XY面にZ座標に応じた「**曲率**」を付与。
![20190915101244.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/8dae0ff2-2117-487f-f781-d26cb8ec6112.gif)
実は**単位円筒**(Unit Cylinder)」から拡張可能な立体構造は**単位球面**(Unit Sphere)だけではありません。
#「トーラス構造」の登場
①まずは**平面トーラス**（折り返し円柱）を準備する。
[トーラス(単数系torus, 複数形tori)-Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%BC%E3%83%A9%E3%82%B9)
![20190915192200.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ff57050c-ac25-1d14-8740-f61e484e22c9.gif)

```R
libraly(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real,Imaginal,Rtime,type="l",xlim=c(-1.5,1.5),ylim=c(-1.5,1.5),zlim=c(-1.5,1.5))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test01") 
```
②**平面トーラス**（折り返し円柱）の表裏両面に、それぞれ真逆の曲率を付与する。
![20190915193504.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/b2c0dc27-e8c9-e364-dc4d-a6219b699672.gif)
![20190915193539.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/96689c92-6922-88ae-5cd9-b179a6719383.png)

```R
libraly(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
r0<-f0(radians)
f1<-function(x){sqrt(1-x^2)}
c0<-seq(-1,1,length=1500)
c1<-c(f1(c0)/2,-1*f1(c0)/2)
#c1<-c(f1(c0),seq(0,0,length=1500))/2)
r1<-r0*(1+c1)
Real<-Re(r1)
Imaginal<-Im(r1)
Rtime<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real,Imaginal,Rtime,type="l",xlim=c(-1.5,1.5),ylim=c(-1.5,1.5),zlim=c(-1.5,1.5))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test02") 
```
例えば時間軸に沿って描画がなされたと想定すると、こう見えたりもします。盃？
![20191020093523.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/7da6c22d-3cd4-b232-04fc-2e8a35a6cefb.gif)

```R
libraly(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
r0<-f0(radians)
f1<-function(x){sqrt(1-x^2)}
c0<-seq(-1,1,length=1500)
c1<-c(f1(c0)/2,-1*f1(c0)/2)
#c1<-c(f1(c0),seq(0,0,length=1500))/2)
r1<-r0*(1+c1)
Real<-Re(r1)
Imaginal<-Im(r1)
Rtime<-c(seq(2,1,length=1500),seq(1,0,length=1500))
plot3d(Real,Imaginal,Rtime,type="l",xlim=c(-1.5,1.5),ylim=c(-1.5,1.5),zlim=c(0,2))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test02") 
```
ちなみに**大半径**(<font color=blue>Major Radius</font>)<font color=green>1</font>,**小半径**(<font color=blue>Minor Radius</font>)<font color=green>1</font>の場合。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201130/20201130011306.gif)
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201130/20201130011342.png)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}
r0<-f0(radians)
c0<-seq(-1,1,length=1500)
#c1<-c(f1(c0)/2,-1*f1(c0)/2)
c1<-c(f1(c0),-1*f1(c0))
r1<-r0*(1+c1)
Real<-Re(r1)
Imaginal<-Im(r1)
Rtime<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real,Imaginal,Rtime,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),xlab="",ylab="",zlab="")

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/unit07") 
```
**大円**と**小円**を追加する。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210220/20210220215504.gif)
![スクリーンショット 2021-02-20 21.57.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/f41ccd85-6116-baa9-0bd7-035e3ac9cfed.png)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}
r0<-f0(radians)
c0<-seq(-1,1,length=1500)
#c1<-c(f1(c0)/2,-1*f1(c0)/2)
c1<-c(f1(c0),-1*f1(c0))
r1<-r0*(1+c1)
Real<-Re(r1)
Imaginal<-Im(r1)
Rtime<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real,Imaginal,Rtime,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),xlab="",ylab="",zlab="")

#大円描写
Real01<-Re(f0(radians))
Imaginal01<-Im(f0(radians))
Rtime01<-seq(1/2,1/2,length=3000)
points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))

#小円描写
Real01<-Re(f0(radians))+1
Imaginal01<-Im(f0(radians))/2+1/2
Rtime01<-seq(0,0,length=3000)
points3d(Rtime01,Real01,Imaginal01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/unit16") 
```
**座標系**(<font color=blue>Coordinate System</font>)としては**媒介変数**<font color=green>t</font>,<font color=green>p</font>(<font color=blue>0≦t≦2π,0≦p≦2π</font>)を用いて以下の様に表します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ea012e15-e600-ce1b-41f3-b7af4ba9564b.png)

* **x**=**大半径**<font color=green>R</font>×<font color=green>cos(t)</font>+**小半径**<font color=green>r</font>×<font color=green>cos(p)</font>×<font color=green>cos(t)</font>
* **y**=**大半径**<font color=green>R</font>×<font color=green>cos(t)</font>+**小半径**<font color=green><font color=green>r</font>×<font color=green>cos(p)</font>×<font color=green>sin(t)</font>
* **z**=**小半径**<font color=green><font color=green>r</font>×<font color=green>sin(p)</font>

ここで重要なのが以下。

* **大半径**<font color=green>R</font>=<font color=green>0</font>,**小半径**<font color=green>R</font>=<font color=green>1</font>の時、**単位球面**(<font color=blue>Unit Sphere</font>)を二重に描く。従って**経緯度法**(<font color=blue>経度-180度~180度に対して緯度-90度~90度</font>)や**3次元極座標系**(<font color=blue>水平角φ=-π~πに対して垂直角0~π</font>)は適用範囲を半分に減らしてなお**単位球面**(<font color=blue>Unit Sphere</font>)上の全座標を示せる訳である。
* 逆に**大半径**<font color=green>R</font>=<font color=green>1</font>,**小半径**<font color=green>R</font>=<font color=green>0</font>の時、<font color=green>Z</font>=<font color=green>0</font>となってただの**単位円**(<font color=blue>Unit Circle</font>)になる。

そしてこの変遷は**オイラーの公式**（<font color=blue>Eulerian Formula</font>）<font color=green>Cos(θ)+Sin(θ)i</font>の一般形<font color=green>Cos(θ)+Cos(θ-π/NoS)i</font>(<font color=blue>NoS=Number of Sides</font>)上における**二辺形**(<font color=blue>Bilateral,NoS=2</font>)すなわち「<font color=purple>1辺がπの円弧2分割図形</font>/<font color=purple>1辺が2の往復線分</font>」から**円そのもの**(<font color=blue>NoS=Inf(inity)</font>)への変遷に合致するのです。
[【Rで球面幾何学】二辺形と一辺形？ - Qiita](https://qiita.com/ochimusha01/items/ce1b6988c4274a136e89)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F597772%2F3b31115e-61ca-5138-3dab-6d7559f4cbb5.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=585de4baac8220e2dcc0162ca45e2a8c)

* この概念上における**一辺形**(<font color=blue>One Side, NoS=1</font>)は「<font color=purple>1辺が2πの円弧</font>=<font color=purple>円そのもの</font>」であり、ここにある種の循環性を見てとる事が出来そうである。<br>**一辺形**(<font color=blue>One Side</font>)<font color=green>Cos(θ)-Cos(θ)i</font><br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/51bb4b5d-dbda-f7bf-3c6b-08cf960c12da.png)<br>**二辺形**(<font color=blue>Bilateral</font>)<font color=green>Cos(θ)+Sin(θ)i</font><br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/32584919-d5f1-e3e8-b46c-02230215c094.png)
<br>**円そのもの**(<font color=blue>Circle Itself</font>)<font color=green>Cos(θ)+Cos(θ)i</font><br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/13f54bca-1d5c-de82-4ca0-541d045a3731.png)

これは**偶奇性**(<font color=blue>Evenness</font>)とも連動してくる概念です。
[【初心者向け】偶奇性概念と共役関係概念の連続性について。](https://qiita.com/ochimusha01/items/cca87fc1fe1294ae6b20)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201126/20201126020800.gif)
**半径**(<font color=blue>Radius</font>)<font color=green>1</font>の二重球面たる**単位球面**(<font color=blue>Unit Sphere</font>)から出発します。**偶奇性**(<font color=blue>Eveness</font>)という時、重要なのはそこに現れてる数が**偶数**/**奇数**の関係にある事そのものより「<font color=red>ピッチが半周期ズレている</font>」事なんですね。例えば**同心円集合**(<font color=blue>Concentric Circle Set</font>)**半径**<font color=green>R</font>={<font color=green>0,1,2,3,4,…,Inf(inity)</font>}から出発すると、これを**偶数層**(<font color=blue>Even Layer</font>)として**奇数層**(<font color=blue>Odd Layer</font>)が**半径**<font color=green>R</font>={<font color=green>0.5,1.5,2.5,3.5,4.5,…,Inf(inity)</font>}という形で現れるのです。
**偶数層**(<font color=blue>Even Layer</font>)<font color=green>0.0-1.0</font>
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201129/20201129045028.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#外球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime02<-seq(0,2,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real02<-Real*c01
Imaginal02<-Imaginal*c01
plot3d(Real02*2,Imaginal02*2,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),xlab="",ylab="",zlab="",col=c(200,200,200))

#内部球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(1/2,3/2,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01
points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test39")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128213021.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test16")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128214347.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01,col=rgb(0,0,1))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test19")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128222402.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01,col=rgb(0,0,1))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test24")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128222832.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01-1,col=rgb(0,0,1))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test27")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201206/20201206225434.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01-1,col=rgb(0,0,1))
#Rtime01段
points3d(Real01+2,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01-2,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01-2,Rtime01,col=rgb(0,0,1))
#Rtime01+1段
points3d(Real01+2,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01+2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01-2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01+2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01-2,Rtime01+1,col=rgb(0,0,1))
#Rtime01-1段
points3d(Real01+2,Imaginal01,Rtime01-1,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01-1,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01+2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01-2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01+2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01-2,Rtime01-1,col=rgb(0,0,1))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test71")
```
**奇数層**(<font color=blue>Odd Layer</font>)<font color=green>0.5</font>
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201129/20201129051121.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#外球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime02<-seq(0,2,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real02<-Real*c01
Imaginal02<-Imaginal*c01
plot3d(Real02*2,Imaginal02*2,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),xlab="",ylab="",zlab="",col=c(200,200,200))

#内部球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(1/4,7/4,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01
points3d(Real01*1.5,Imaginal01*1.5,Rtime01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test41")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128212256.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写

r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test15")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128215109.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写

r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01,Rtime01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test20")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128221702.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写

r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01+1,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01-1,Rtime01,col=rgb(1,0,0))
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test23")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128223325.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01+1,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01-1,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01,Imaginal01,Rtime01-1/2,col=rgb(1,0,0))
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test28")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201129/20201129052126.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01+1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test42")
```
**偶数層**(<font color=blue>Even Layer</font>)<font color=green>0.0-2.0</font>+**奇数層**(<font color=blue>Odd Layer</font>)<font color=green>0.5</font>
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128213350.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写

r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test17")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128220933.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写

r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01,Rtime01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test21")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128221320.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写

r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01+1,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01-1,Rtime01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test22")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201209/20201209234750.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01+1,Rtime01,col=rgb(0,0,1))
points3d(Real01-1,Imaginal01+1,Rtime01,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01-1,Rtime01,col=rgb(0,0,1))
points3d(Real01-1,Imaginal01-1,Rtime01,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01+1,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01-1,Rtime01,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test74")
```

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201128/20201128224020.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01-1,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01+1,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01-1,Rtime01,col=rgb(1,0,0))
points3d(Real01,Imaginal01,Rtime01+1,col=rgb(1,0,0))
points3d(Real01,Imaginal01,Rtime01-1,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test30")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201206/20201206223349.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test61")
```

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201129/20201129040350.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01-1,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test32")
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201202/20201202052516.gif)

```R
library(rgl)
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
f1<-function(x){sqrt(1-x^2)}

#トーラス描写
r1<-f0(radians)
c0B<-seq(-1,1,length=1500)
c02<-c(f1(c0B),-1*f1(c0B))
r2<-r1*(1+c02)
Real02<-Re(r2)
Imaginal02<-Im(r2)
Rtime02<-c(seq(0,1,length=1500),seq(1,0,length=1500))
plot3d(Real02,Imaginal02,Rtime02,type="l",xlim=c(-2,2),ylim=c(-2,2),zlim=c(0,2),col=c(200,200,200))

#球面描写
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime01<-seq(0,1,length=3000)
c0A<-seq(-1,1,length=3000)
c01<-f1(c0A)
Real01<-Real*c01
Imaginal01<-Imaginal*c01

points3d(Real01,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01,Rtime01-1,col=rgb(0,0,1))
points3d(Real01+1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01+1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01+1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01+1,Rtime01-1/2,col=rgb(1,0,0))
points3d(Real01-1,Imaginal01-1,Rtime01-1/2,col=rgb(1,0,0))
#Rtime01段
points3d(Real01+2,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01-2,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01+2,Rtime01,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01-2,Rtime01,col=rgb(0,0,1))
#Rtime01+1段
points3d(Real01+2,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01+1,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01+2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01-2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01+2,Rtime01+1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01-2,Rtime01+1,col=rgb(0,0,1))
#Rtime01-1段
points3d(Real01+2,Imaginal01,Rtime01-1,col=rgb(0,0,1))
points3d(Real01,Imaginal01+2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01,Rtime01-1,col=rgb(0,0,1))
points3d(Real01,Imaginal01-2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01+2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01+2,Imaginal01-2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01+2,Rtime01-1,col=rgb(0,0,1))
points3d(Real01-2,Imaginal01-2,Rtime01-1,col=rgb(0,0,1))

movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test34")
```

それにつけても何かを連想させませんか？　そう、**立体充填性**(<font color="blue">Space filling</font>)における**正四面体**(<font color="blue">Regular Tetrahedron</font>)と**正八面体**(<font color="blue">Regular Octahedron</font>)の相補関係です。
[【オイラーの多面体定理と正多面体】とある「球面幾何学」の出発点…](https://qiita.com/ochimusha01/items/5f8dbf33bac5b7227a11)
![triangles004.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201129/20201129055848.gif)

あれ、**数論**(<font color=blue>Number Theory</font>)の話をしてた筈なのに、いつの間にか**分子構造**(<font color=blue>Molecular structure</font>)みたいな世界に足を踏み入れている!!