【Python演算処理】単位球面(Unit Shere)を巡る数理②そして単位トーラス(Unit Torus)へ

考えてみれば、以下のアニメーションをちゃんと目で追える様になれば二次元/三次元座標系の三角関数における$\cos(θ)$と$\sin(θ)$の働きを概ね理解出来たといえそうです。
[【Python演算処理】単位球面を巡る数理①とりあえず描画してみる。](https://qiita.com/ochimusha01/items/1d20cceaacaf0d923858)
![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%252F0%252F597772%252F1ac2d97b-2978-4b06-b118-90672a56f589.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D0f2f93d3264976f49364739814d63e78?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=84aa0bce60ae73b85ab416941b22ae2d)

```math
\cos(θ)=\frac{e^{θi}+e^{-θi}}{2}\\
\sin(θ)=\frac{e^{θi}-e^{-θi}}{2i}
```
![inage.gif](https://camo.qiitausercontent.com/1fc7853895952f0487db055d37b4c0815377b339/68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231303431322f32303231303431323039313735392e676966)
![inage.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412091159.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=21dfaebee4d88f5114c8e68b9b3e03f7)
最後のアニメーションを目で追う際には、以下の円筒アニメーションが参考となるでしょう。
[【Python演算処理】単位円筒を巡る数理](https://qiita.com/ochimusha01/items/fd8e51940b5e0e1a28c5)
![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412045910.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=90126b201226bdad53630f166715b67d)
![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412050306.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=f18cb9e2a64d940f2cb7927a0de07a36)

つまりはこういう事です。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210418/20210418055850.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210418/20210418055931.gif)
$\sin(θ)\cos(θ)$波の検出
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210418/20210418061621.png)

* 0/2πラジアンの時0
* ±$\frac{π}{2}$ラジアンの時$\frac{1}{2}$
* πラジアンの時-1

$\sin(θ)\sin(θ)$波の検出
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210418/20210418061845.png)

* 0/2π/±$\frac{π}{2}$ラジアンの時0
* 半径±$\frac{1}{2}$の時に頂点

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円球データ作成
def src(x):
    return m.sqrt(1-x**2)
c0=num.linspace(0,m.pi*2,121,endpoint = True)
z0=num.linspace(-1,1,121,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm])*src(z0[nm]),m.sin(c0[nm])*src(z0[nm])))
s1=num.array(s0)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiBx=num.sqrt(1-MiHz**2)
MiHy=num.repeat(0,61)

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,z0,color="black",lw=0.5)
    #スポーク描画
    for nm in range(len(s1)):
        ax.plot([0,s1[nm].real],[0,s1[nm].imag],z0[nm],color="gray",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,-1],[0,0],[0,0],color="green",lw=1)
    ax.plot([0,1],[0,0],[1,1],color="blue",lw=1)
    ax.plot([1,1],[0,0],[-1,0],color="red",lw=1)
    ax.plot([1,1],[0,0],[0,1],color="blue",lw=1)
    #球面描画
    ax.plot(MiBx,MiHy,MiHz,color="blue",lw=1)
    ax.plot(-MiBx,MiHy,MiHz,color="blue",lw=1)
    ax.plot(MiHy,MiBx,MiHz,color="red",lw=1)
    ax.plot(MiHy,-MiBx,MiHz,color="red",lw=1)
    #諸元追加
    ax.set_ylim([-1.1,1.1])
    ax.set_xlim([-1.1,1.1])
    ax.set_zlim([-1.1,1.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=10, azim=Time_code[n])

Time_code0=num.arange(0,360,6) 
Time_code=Time_code0[::-1]  
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("output552.gif", writer="pillow")
```
おや、垂直方面から眺めると思わぬ図形が…これは「**尻の割れ目**」?
[【超わかる】オイラーの公式を見て！聞いて！感じるンゴ！](https://www.gachitan.com/entry/eulers_formula)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210418/20210418060012.gif)
さらに調整を加えるとハート型になる様です。
[Python でハートを描く](https://qiita.com/QUANON/items/ccbdfb8048f223e8892b)
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F6697%2F8fc0b39c-1b90-1f3f-0d86-efb82c56fc86.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=0532fbb79126cbbce023d7dd908427e7)
そして周期=1の場合。水平方向と垂直方向のアスペクト比2:1なので潰れて饅頭の様な形に。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210420/20210420155100.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210420/20210420144142.gif)
sin(θ)cos(θ)波の検出
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210420/20210420145935.png)
sin(θ)sin(θ)波の検出
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210420/20210420145643.png)
もちろん上面図(XY面)からの見え方は変わらない。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210420/20210420144226.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円球データ作成
def src(x):
    return m.sqrt(1-x**2)
c1=num.linspace(0,m.pi*2,60,endpoint = False)
c2=num.linspace(0,m.pi*2,61,endpoint = True)
c0=num.concatenate([c1, c2])
z0=num.linspace(-1,1,121,endpoint = True)
zc1=num.linspace(-1,1,60,endpoint = False)
zc2=num.linspace(-1,1,61,endpoint = True)
zc=num.concatenate([zc1,zc2])
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm])*src(zc[nm]),m.sin(c0[nm])*src(zc[nm])))
s1=num.array(s0)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiBH1=num.linspace(-1,1,30,endpoint = False)
MiBH2=num.linspace(-1,1,31,endpoint = True)
MiBH=num.concatenate([MiBH1,MiBH2])
MiBx=num.sqrt(1-MiBH**2)
MiHy=num.repeat(0,61)

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real,s1.imag,z0,color="black",lw=0.5)
    #スポーク描画
    for nm in range(len(s1)):
        ax.plot([0,s1[nm].real],[0,s1[nm].imag],z0[nm],color="gray",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="green",lw=1)
    ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,1],[0,0],[-1,-1],color="red",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="green",lw=1)
    ax.plot([0,1],[0,0],[1,1],color="blue",lw=1)
    ax.plot([1,1],[0,0],[-1,0],color="red",lw=1)
    ax.plot([1,1],[0,0],[0,1],color="blue",lw=1)
    #球面描画
    ax.plot(MiBx,MiHy,MiHz,color="blue",lw=1)
    ax.plot(-MiBx,MiHy,MiHz,color="blue",lw=1)
    ax.plot(MiHy,MiBx,MiHz,color="red",lw=1)
    ax.plot(MiHy,-MiBx,MiHz,color="red",lw=1)
    #諸元追加
    ax.set_ylim([-1.1,1.1])
    ax.set_xlim([-1.1,1.1])
    ax.set_zlim([-1.1,1.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=10, azim=Time_code[n])

Time_code0=num.arange(0,360,6) 
Time_code=Time_code0[::-1]  
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("output560.gif", writer="pillow")
```
#極座標系(<font color=blue>Polar Coordinate System</font>)表示の二次元版/3次元版
ここで改めて**極座標系**(Polar Coordinate System)**表示**の二次元版/三次元版について振り返ってみたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a13940d7-b336-b446-93a6-6ce4dc70d7a4.png)
**二次元空間**(円弧)における**デカルト座標系**(x,y)と**極座標系**(r,φ)の相互変換

* 原点(0,0)からの距離$r=\sqrt{x^2+y^2}$
* $φ=-(\arctan^2(x,y)-\frac{π}{2})$
* $x=r×\cos(φ)$
* $y=r×\sin(φ)$

**三次元空間**(球面)における**デカルト座標系**(x,y,z)と**極座標系**(r,φ,θ)の相互変換

* 原点(0,0,0)からの距離$r=\sqrt{x^2+y^2+z^2}$
* $φ=-(\arctan^2(x,y)-\frac{π}{2})$
* $θ=-(\arctan^2(\sqrt{x^2+y^2+z^2},z)-\frac{π}{2})$
* $x=r×\sin(θ)\cos(φ)$
* $y=r×\sin(θ)\sin(φ)$
* $z=r×\cos(θ)$

また、**球の体積を求める三重積分**は以下の様に規定されています。
[EMANの物理学>物理数学>線積分](https://eman-physics.net/math/calculus02.html)
[EMANの物理学>物理数学>面積分と体積分](https://eman-physics.net/math/calculus03.html)
[EMANの物理学>物理数学>ヤコビアン](https://eman-physics.net/math/calculus04.html)

```math
\int U(x,y,z)dV=\int_{0}^{2π}\int_{0}^{π}\int_{0}^{1}U(r,θ,φ)r^2\sinθdrdθdφ\\
=\int_{0}^{2π}\int_{0}^{π}\int_{0}^{1}\begin{vmatrix}
\frac{∂x}{∂r} & \frac{∂x}{∂θ}  & \frac{∂x}{∂φ}\\
\frac{∂y}{∂r} & \frac{∂y}{∂θ}  & \frac{∂y}{∂φ}\\
\frac{∂z}{∂r} & \frac{∂z}{∂θ} & \frac{∂z}{∂φ}
\end{vmatrix} drdθdφ
```
積分範囲の積み重ね方に注目すると以下となってます。
[【Python演算処理】「N次球概念導入による円/球関係の数理の統合」？](https://qiita.com/ochimusha01/items/f7c9077eccfdbd0dd47a)

* まずは**角度**$φ=0→2π$の範囲で積分して**円周**$2πr$に到達。
* さらに**角度**$θ=0→π$の範囲で積分を重ね**球の表面積**$4πr^2$に到達。
* さらに**半径**$r=0→1$の範囲で積分を重ね**球の体積**$\frac{4}{3}πr^3$に到達。

こうした計算では「**θがφの半分になる事**」事が**自明の場合**(Trival Case)として扱われていますが、実はこの辺りが曲者だったりするのです。

#そして単位トーラス(<font color=blue>Unit Torus</font>)へ

結論から先に述べると、どうやら上掲の**円/球面座標系**は**トーラス座標系**(Torus Coordinates System)のごく一部を援用しているに過ぎない様なのです。**大半径**(Major Radius)Rと**小半径**(Minor Radius)の組み合わせで表現されるそれと**デカルト座標系**の関係は、一般に媒介変数t,p(0≦t≦2π,0≦p≦2π)を用いて以下の様に表されます。
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F597772%2Fea012e15-e600-ce1b-41f3-b7af4ba9564b.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=8d77f339aed6a6b12d49420e23185467)

* x=$R×\cos(t)+r×\cos(p)\cos(t)$
* y=$R×cos(t)+r×\cos(p)\sin(t)$
* z=$r×\sin(p)$

**上掲の円/球面座標系**との関係は以下。

* **大半径**R=0,**小半径**r=1の時、**単位球面**(Unit Sphere)を二重に描く。従って**経緯度法**(経度-180度→+180度に対して緯度-90度→+90度)や**3次元極座標系**(水平角φ=-π→+πに対して垂直角θ=0→π)は適用範囲を半分に減らしてなお**単位球面**(Unit Sphere)上の全座標を示せる訳である。
* 逆に**大半径**R=1,**小半径**r=0の時、Z=0となってただの**単位円**(Unit Circle)となる。**大半径**Rと**小半径**rの比が1:1の場合(外径が半径1の単位円と一致するのは大半径R=小半径r=$\frac{1}{2}$の時で、大半径R=小半径r=1の時の外径は2となる）からこの極限状態に向かう展開は「**半径1の単位円に内接する正N角形とそのさらなる内接円の推移**($N=\infty$に近づくほど、その正N角形の辺長計は円周長2πに限りなく近づく)」数理そのものである。<br>[【初心者向け】挟み撃ち定理による円周率πの近似](https://qiita.com/ochimusha01/items/1caff7d8af4aab167aaa)<br>![image.gif](https://camo.qiitausercontent.com/fcd91534792d3eb205412b8a73f93df077dc9449/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3539373737322f32643963613061362d366161352d643534352d333261642d3966333336666630636462352e676966)

そう、両者が本来連続しているという事は隠された中間状態が存在するのです。特に**大半径**Rと**小半径**rの比が1:1の場合が重要なので、これを**単位トーラス**(Unit Torus)と呼び分けたいと思います。

###Rの場合
[トーラス構造と古典数学】「単位円筒」から「トーラス構造」へ](https://qiita.com/ochimusha01/items/f6406e768aa24b8aea1a)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210220%2F20210220215504.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=7503256d30ded86922138cddf55882de)
![image.png](https://camo.qiitausercontent.com/d1cc17b9f43a1457d18a4ac30ea2135bd7528257/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3539373737322f66343163636438352d363131362d626161392d306264372d3033356533616339636665642e706e67)

###pythonの場合

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412193831.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412193633.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412193720.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=num.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)
z0=num.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv0=num.linspace(-1,1,1201,endpoint = True)
cv1=num.sqrt(1-cv0**2)

#トーラス計算
s2=s1*(1+cv1)
s3=s1*(1-cv1)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiPx=1+num.sqrt(1-MiHz**2)
MiMx=1-num.sqrt(1-MiHz**2)
MiHy=num.repeat(0,61)

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s2.real,s2.imag,z0,color="gray",lw=0.5)
    ax.plot(s3.real,s3.imag,z0,color="gray",lw=0.5)
    #スポーク描画
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #   ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",lw=0.5)
    #単位円描画
    ##ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="blue",lw=1)
    ##ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,2],[0,0],[-1,-1],color="black",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="blue",lw=1)
    ax.plot([1,1],[0,0],[0,1],color="red",lw=1)
    ax.plot([0,2],[0,0],[1,1],color="black",lw=1)
    ax.plot([2,2],[0,0],[-1,1],color="black",lw=1)
    #小半径描画
    ax.plot(MiPx,MiHy,MiHz,color="red",lw=1)
    ax.plot(MiMx,MiHy,MiHz,color="red",lw=1)
    #諸元追加
    ax.set_ylim([-2.1,2.1])
    ax.set_xlim([-2.1,2.1])
    ax.set_zlim([-2.1,2.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=25, azim=Time_code[n])

Time_code0=num.arange(0,360,6) 
Time_code=Time_code0[::-1]   
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("output531.gif", writer="pillow")
```
<font color=red>今度は「**ヘモグロビン**」が現れた？</font>
[健康診断で、ヘモグロビン値が高い・低いと言われたら？](https://www.sonysonpo.co.jp/md/i_hch001.html)
![image.png](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210412/20210412195434.png)

* **大半径**R=小半径r=1(外径2)の時と**大半径**R=**小半径**r=$\frac{1}{2}$(外径1)の時のどちらを単位に選ぶかは状況による。
* その状況はまさに**円筒座標系**において周回ピッチを1周と置くか(分枝切断点1)、半周と置くか(分枝切断点2) に対応する。<br>[【Python演算処理】単位円筒を巡る数理](https://qiita.com/ochimusha01/items/fd8e51940b5e0e1a28c5)<br>**1周と置く場合**(Γ関数との関連が発生)<br>![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412045131.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=7793e0b36eee4b4383cf1c504f8434ea)<br>![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412045515.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=7ee1eef42564fbc986a8ee5d0df0826d)<br>**半周と置く場合**(偶奇性との関連が発生)<br>![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412045910.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=90126b201226bdad53630f166715b67d)<br>![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210412%2F20210412050306.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=f18cb9e2a64d940f2cb7927a0de07a36)

そう、どうやらある意味、かかる**単位トーラス**概念の登場こそが**偶奇**(Patity)の概念の大源流となる様なのです。
[【数理考古学】とある実数列の規定例①等差数列から加法整数群へ](https://qiita.com/ochimusha01/items/07ae45b915bb1aa6c9f5)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn-ak.f.st-hatena.com%25252Fimages%25252Ffotolife%25252Fo%25252Fochimusha01%25252F20210105%25252F20210105003122.gif%253Fixlib%253Drb-1.2.2%2526auto%253Dformat%2526gif-q%253D60%2526q%253D75%2526w%253D1400%2526fit%253Dmax%2526s%253D1c5e7641bb15c183f387fb9c6c92759a%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26s%3D8b3c1ac01fe5a4de036898e40dd0d907?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=197bb7aab21ce0934f6b293dabac2201)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn-ak.f.st-hatena.com%25252Fimages%25252Ffotolife%25252Fo%25252Fochimusha01%25252F20210105%25252F20210105071334.gif%253Fixlib%253Drb-1.2.2%2526auto%253Dformat%2526gif-q%253D60%2526q%253D75%2526w%253D1400%2526fit%253Dmax%2526s%253D6cc2d838c056f87959b9d35678b0d60a%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D302dce6d5da2947a562c26895875c993?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=a7d0041da626a13ae28e77cb0edc581d)

この数理がトーラス座標系における以下の表示に対応する訳です。

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210415/20210415063354.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210415/20210415062821.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210415/20210415063046.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=num.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)
z0=num.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv0=num.linspace(-1,1,1201,endpoint = True)
cv1=num.sqrt(1-cv0**2)

#トーラス計算
s2=s1*(1+cv1)
s3=s1*(1-cv1)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiPx=1+num.sqrt(1-MiHz**2)
MiMx=1-num.sqrt(1-MiHz**2)
MiBx=num.sqrt(1-MiHz**2)
MiHy=num.repeat(0,61)

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s2.real,s2.imag,z0,color="gray",lw=0.5)
    ax.plot(s3.real,s3.imag,z0,color="gray",lw=0.5)
    #スポーク描画
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #   ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",lw=0.5)
    #単位円描画
    ##ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="blue",lw=1)
    ##ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,2],[0,0],[-1,-1],color="black",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="blue",lw=1)
    ax.plot([1,1],[0,0],[0,1],color="red",lw=1)
    ax.plot([0,2],[0,0],[1,1],color="black",lw=1)
    ax.plot([2,2],[0,0],[-1,1],color="black",lw=1)
    #小半径描画
    ax.plot(MiPx,MiHy,MiHz,color="red",lw=1)
    ax.plot(MiMx,MiHy,MiHz,color="red",lw=1)
    ax.plot(MiBx,MiHy,MiHz,color="blue",lw=1)
    #諸元追加
    ax.set_ylim([-2.1,2.1])
    ax.set_xlim([-2.1,2.1])
    ax.set_zlim([-2.1,2.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=25, azim=Time_code[n])

Time_code0=num.arange(0,360,6) 
Time_code=Time_code0[::-1]   
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("output540.gif", writer="pillow")
```
さらに小半径をアニメーションさせてみましょう。とりあえず極座標系rφθにおいてφ=θと置いて外回し(時計回り)。こうして図示してみると**経度**(±90度)が**緯度**(±180度)の半分、**三次元曲座標系**rφθにおいて**垂直角**θ(π)が**水平角**φ(2π)の半分となるのは「**復路**」を省いているからだという事が一目瞭然で分かります。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210420/20210420163404.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210420/20210420164238.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=num.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)
z0=num.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv0=num.linspace(-1,1,1201,endpoint = True)
cv1=num.sqrt(1-cv0**2)

#トーラス計算
s2=s1*(1+cv1)
s3=s1*(1-cv1)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiPx=1+num.sqrt(1-MiHz**2)
MiMx=1-num.sqrt(1-MiHz**2)
MiBx=num.sqrt(1-MiHz**2)
MiHy=num.repeat(0,61)

#小半径アニメーション
MiAh1=num.linspace(-1,1,31,endpoint =True)
MiAh2=num.linspace(-1,1,31,endpoint = False)
MiAh=num.concatenate([MiAh1, MiAh2[::-1]])
MiAv1=1-num.sqrt(1-MiAh1**2)
MiAv2=1+num.sqrt(1-MiAh2[::-1]**2)
MiAv=num.concatenate([MiAv1, MiAv2])

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s2.real,s2.imag,z0,color="gray",lw=0.5)
    ax.plot(s3.real,s3.imag,z0,color="gray",lw=0.5)
    #スポーク描画
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #   ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",lw=0.5)
    #単位円描画
    ##ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="blue",lw=1)
    ##ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,2],[0,0],[-1,-1],color="black",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="blue",lw=1)
    ax.plot([1,2],[0,0],[0,0],color="black",lw=1)
    ax.plot([1,1],[0,0],[-1,1],color="black",lw=1)    
    ax.plot([1,MiAv[n]],[0,0],[0,MiAh[n]],color="red",lw=1)
    ax.plot([0,2],[0,0],[1,1],color="black",lw=1)
    ax.plot([2,2],[0,0],[-1,1],color="black",lw=1)
    #小半径描画
    ax.plot(MiPx,MiHy,MiHz,color="red",lw=1)
    ax.plot(MiMx,MiHy,MiHz,color="red",lw=1)
    ax.plot(MiBx,MiHy,MiHz,color="blue",lw=1)
    #諸元追加
    ax.set_ylim([-2.1,2.1])
    ax.set_xlim([-2.1,2.1])
    ax.set_zlim([-2.1,2.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=25, azim=Time_code[n])

Time_code0=num.arange(0,360,6) 
Time_code=Time_code0[::-1]   
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("output574.gif", writer="pillow")
```
**実軸**(Real Axis)に絡めると反時計回りが正解に思えます。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210422/20210422202719.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210422/20210422202805.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=num.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)
z0=num.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv0=num.linspace(-1,1,1201,endpoint = True)
cv1=num.sqrt(1-cv0**2)

#トーラス計算
s2=s1*(1+cv1)
s3=s1*(1-cv1)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiPx=1+num.sqrt(1-MiHz**2)
MiMx=1-num.sqrt(1-MiHz**2)
MiBx=num.sqrt(1-MiHz**2)
MiHy=num.repeat(0,61)

#小半径アニメーション
MiAh1=num.linspace(-1,1,31,endpoint =True)
MiAh2=num.linspace(-1,1,31,endpoint = False)
MiAh3=num.concatenate([MiAh1, MiAh2[::-1]])
MiAh=num.concatenate([MiAh3[14:61], MiAh3[0:13]])
MiAv1=1-num.sqrt(1-MiAh1**2)
MiAv2=1+num.sqrt(1-MiAh2[::-1]**2)
MiAv3=num.concatenate([MiAv2, MiAv1])
MiAv=num.concatenate([MiAv3[14:61], MiAv3[0:13]])

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s2.real,s2.imag,z0,color="gray",lw=0.5)
    ax.plot(s3.real,s3.imag,z0,color="gray",lw=0.5)
    #スポーク描画
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #   ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",lw=0.5)
    #単位円描画
    ##ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="blue",lw=1)
    ##ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,2],[0,0],[-1,-1],color="black",lw=1)
    ax.plot([0,1],[0,0],[0,0],color="blue",lw=1)
    ax.plot([1,2],[0,0],[0,0],color="green",lw=1)
    ax.plot([1,1],[0,0],[-1,1],color="black",lw=1)    
    ax.plot([1,MiAv[n]],[0,0],[0,MiAh[n]],color="red",lw=1)
    ax.plot([0,2],[0,0],[1,1],color="black",lw=1)
    ax.plot([2,2],[0,0],[-1,1],color="black",lw=1)
    #小半径描画
    ax.plot(MiPx,MiHy,MiHz,color="red",lw=1)
    ax.plot(MiMx,MiHy,MiHz,color="red",lw=1)
    ax.plot(MiBx,MiHy,MiHz,color="blue",lw=1)
    #諸元追加
    ax.set_ylim([-2.1,2.1])
    ax.set_xlim([-2.1,2.1])
    ax.set_zlim([-2.1,2.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=25, azim=Time_code[n])

Time_code0=num.arange(0,360,6) 
Time_code=Time_code0[::-1]   
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("output590.gif", writer="pillow")
```
そしていよいよ、世界全体を回すインチキ回転からの脱却…cmath.rect()関数を導入するとあっけないほど簡単に移行が完了してしまいました。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210422/20210422210237.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210422/20210422200418.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210422/20210422201710.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=num.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)
z0=num.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv0=num.linspace(-1,1,1201,endpoint = True)
cv1=num.sqrt(1-cv0**2)

#トーラス計算
s2=s1*(1+cv1)
s3=s1*(1-cv1)

#小半径追加
MiHz0=num.linspace(-1,1,61,endpoint = True)
MiHz=MiHz0[::-1]
MiPx=1+num.sqrt(1-MiHz**2)
MiMx=1-num.sqrt(1-MiHz**2)
MiBx=num.sqrt(1-MiHz**2)
MiHy=num.repeat(0,61)

#小半径アニメーション(元図形)
MiAh1=num.linspace(-1,1,31,endpoint =True)
MiAh2=num.linspace(-1,1,31,endpoint = False)
MiAh3=num.concatenate([MiAh1, MiAh2[::-1]])
MiAh=num.concatenate([MiAh3[14:61], MiAh3[0:13]])
MiAv1=1-num.sqrt(1-MiAh1**2)
MiAv2=1+num.sqrt(1-MiAh2[::-1]**2)
MiAv3=num.concatenate([MiAv2, MiAv1])
MiAv=num.concatenate([MiAv3[14:61], MiAv3[0:13]])

#小半径アニメーション(回転)
MiAvC0=[]
for nm in range(len(MiAv)):
    MiAvC0.append(complex(MiAv[nm],0))
MiAvC=num.array(MiAvC0) 

#単位円データ作成
u0=num.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=num.array(u1)
uz0=num.repeat(-1,61)
uz1=num.repeat(-0,61)
uz2=num.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #アニメーション演算
    Tcode=num.linspace(0,m.pi*2,61,endpoint =True)
    MiAvD0=[]
    for nm in range(len(MiAvC)):
        MiAvD0.append(c.rect(MiAv[nm],Tcode[n]))
    MiAvD=num.array(MiAvD0)  
    #中心円
    MiBvD0=[]
    for nm in range(len(MiBx)):
        MiBvD0.append(c.rect(MiBx[nm],Tcode[n]))
    MiBvD=num.array(MiBvD0)  
    #外縁線
    MiCvD0=[]
    for nm in range(len(MiHz)):
        MiCvD0.append(c.rect(2,Tcode[n]))
    MiCvD=num.array(MiCvD0)  
    #円柱描画
    ax.plot(s2.real,s2.imag,z0,color="gray",lw=0.5)
    ax.plot(s3.real,s3.imag,z0,color="gray",lw=0.5)
    #スポーク描画
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #    ax.plot([0,uc[num].real],[0,uc[num].imag],[1,1],color="gray",lw=0.5)
    #for num in range(len(uc)):
    #   ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="olivedrab",lw=0.5)
    #単位円描画
    ##ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="blue",lw=1)
    ##ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,MiCvD[n].real],[0,MiCvD[n].imag],[-1,-1],color="black",lw=1)
    ax.plot([0,uc[n].real],[0,uc[n].imag],[0,0],color="blue",lw=1)
    ax.plot([uc[n].real,MiCvD[n].real],[uc[n].imag,MiCvD[n].imag],[0,0],color="green",lw=1)
    ax.plot([uc[n].real,uc[n].real],[uc[n].imag,uc[n].imag],[-1,1],color="black",lw=1)    
    ax.plot([uc[n].real,MiAvD[n].real],[uc[n].imag,MiAvD[n].imag],[0,MiAh[n]],color="red",lw=1)
    ax.plot([0,MiCvD[n].real],[0,MiCvD[n].imag],[1,1],color="black",lw=1)
    ax.plot([MiCvD[n].real,MiCvD[n].real],[MiCvD[n].imag,MiCvD[n].imag],[-1,1],color="black",lw=1)
    #小半径描画
    ax.plot(MiAvD.real,MiAvD.imag,MiAh,color="red",lw=1)
    ax.plot(MiBvD.real,MiBvD.imag,MiHz,color="blue",lw=1)
    #諸元追加
    ax.set_ylim([-2.1,2.1])
    ax.set_xlim([-2.1,2.1])
    ax.set_zlim([-2.1,2.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("Real")
    ax.set_ylabel("Imaginal")
    ax.set_zlabel("Cycle")
    # グラフを回転
    ax.view_init(elev=25, azim=45)

Tcode=num.linspace(0,m.pi*2,61,endpoint =True)
#Time_code0=num.arange(0,360,6) 
#Time_code=Time_code0[::-1] 
#unit_cylinder(15)
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("output588.gif", writer="pillow")
```
そしてかかる**半径**1の**単位円/球**(偶数系)と**大半径**=**小半径**1の**単位トーラス**(奇数系)の関係を連鎖させ、半径が整数倍の**同心円**/**同心球面座標系**(スカラーの世界=角度の概念が存在しない極座標系)に発展させるのは、**自明の場合**(Trival Case)の範疇に入りそうです。それとも何か厳密な証明が必要?
[【数理考古学】とある実数列の規定例①等差数列から加法整数群へ](https://qiita.com/ochimusha01/items/07ae45b915bb1aa6c9f5)
![image.gif](https://camo.qiitausercontent.com/9e756e40dceca25c93c9517bc61e134658c8ae2e/68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303230313132362f32303230313132363032303830302e676966)
![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20201111%252F20201111061314.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D0ec5ad367a9238d99fae4325c3a95b29?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=e11f5760bfc019e1f55b5ab806d9b76f)

###0.5次元と1次元の狭間

[【数理考古学】とある実数列の規定例③オイラーの等式が意味するもの？](https://qiita.com/ochimusha01/items/04ffa772d548a6b64310)

>0.5次元の到達地点は2次元/3次元の極座標系の検知である。
>![image.gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20210117%252F20210117002845.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D3fdd3f6ce5d5ffdccc5284ed07799871?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=d0b848e2f59c9b6db24b27f86c3dd1d1)
>![image,gif](https://staging-qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20201110%252F20201110010727.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D90db2db66ddc81e814913c6046ffcf04?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=0d7f1cdcf49589372afa10ce7ea3a72a)
>**自明の場合**(Trival Case)として次の段階において獲得済の半径と垂直に交わる新たな半径を伸ばしたのが**トーラス座標系**といえよう。しかし実際の次の着地点となる1次元は**数直線**(Number Line)のみを**実軸**(Real Axis)とする**円筒座標系**なのである。
>![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210411/20210411224605.gif)

この矛盾を解決するには**トーラス座標系**を分枝切断して「<font color=red>アイロンを当てた様に真っ直ぐに伸ばした上で</font>」改めて連続性を確保しないといけません。なら、どうやって？　それについては以下続報…