【初心者向け】複素共役（Complex Conjugate）のアニメーション表示について。

(2020年11月21日)Rによる投稿。
掲題の**複素共役**（<font color=blue>複素共軛, Complex Conjugate</font>）のアニメーション表示については、以前の投稿でこう実装した事もあります。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113215700.gif)

```R

#RD=2角形（Regular Digon）
#Radian=角度（60分割）
RD<-function(Radian){
cx<-seq(-1,1,length=60)
f0<-function(x) sqrt(1-x^2)
cy<-f0(cx)
plot(cx,cy,asp=1,type="l",col=rgb(0,1,0),xlim=c(-1,1),ylim=c(-1,1),main="Complex Conjugate",xlab="X",ylab="sqrt(1-X^2) & -sqrt(1-X^2)")

par(new=T)#上書き指定

plot(cx,-1*cy,asp=1,type="l",col=rgb(1,0,0),xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="")

#緯度(latitude)の描写
lat<-seq(-1,1,length=9)

for(i in lat){
segments(i,f0(i),i,-f0(i),col=c(200,200,200))
}

#経度（Longitude）の描写
lon<-seq(-pi/2,pi/2,length=9)
for(i in lon){

par(new=T)#上書き指定

plot(cx,sin(i)*cy,asp=1,type="l",col=c(200,200,200),xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="")
}
#塗りつぶし

p_max<-15
p0<-seq(pi,0,length=p_max)
px_Hi<-rev(cos(p0))
px_Low<-rev(cos(p0*-1))
py_Hi<-rev(sin(p0))
py_Low<-rev(sin(p0*-1))

#左側インジケータ描画（緑）
polygon(c(px_Hi[1:Radian],px_Low[Radian:1]), #x
c(py_Hi[1:Radian],py_Low[Radian:1]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,1,0)) 　#塗りつぶす色
#右側インジケータ描画（赤）
polygon(c(px_Hi[p_max:Radian],px_Low[Radian:p_max]), #x
c(py_Hi[p_max:Radian],py_Low[Radian:p_max]), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　#塗りつぶす色
}
#アニメーション
library("animation")
Time_Code=c(1:15,14:1)
saveGIF({
for (i in Time_Code){
　RD(i)
}
}, interval = 0.1, movie.name = "RD01.gif")

```

しかしながら以下の投稿によって「**観測者問題**(<font color=blue>ある種の錯視問題</font>)」が浮上してきたので再チャレンジの必要が生じてしまったのです。
[【初心者向け】「観測者問題」のあっけない解決方法? - Qiita](https://qiita.com/ochimusha01/items/352399b7d19cd59eec81)

#x軸に沿った展開。
要するに<font color=green>Cos(θ)+Sin(θ)i</font>の場合ですね。まずはアニメーションさせる関数を準備します。
![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/7759ec7c-2f9d-5073-699e-9fa481c9db1f.png)

```R

conjugate00<-function(inbetween){

c0<-seq(0,pi*2,length=61)
cx<-cos(c0)
cy<-sin(c0)

plot(cx,cy,type="l",xlim=c(-1,1),asp=1,ylim=c(-1,1),main="Complex Conjugate",xlab="Cos(θ)",ylab="Sin(θ)i", col=rgb(0,1,0))

#複素共役を結ぶ補助線(座標の半分しか使わない)
segments(cos(c0[2:30]+inbetween),sin(c0[2:30]+inbetween),cos(c0[2:30]+inbetween),-sin(c0[2:30]+inbetween),col=c(200,200,200,200))

abline(h=0,col=rgb(1,0,0))
abline(v=0,col=rgb(1,0,0))

# 凡例を書き添える 。
legend("topright", legend=c("Circle(Radius=1,Augment=θ)","x=y=0"), lty =c(1,1),col=c(rgb(0,1,0),rgb(1,0,0)))
}

conjugate00(0)
```

**アニメーション化**(<font color=blue>x=+1→-1、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113203615.gif)

```R
#アニメーション
library("animation")
Time_Code=c(0,pi/90,pi*2/90,0,pi/90,pi*2/90,0,pi/90,pi*2/90,0,pi/90,pi*2/90)

saveGIF({
for (i in Time_Code){
　conjugate00(i)
}
}, interval = 0.1, movie.name = "conjugateX_forward.gif")
```
**アニメーション化**(<font color=blue>-1→+1、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113203428.gif)

```R

#アニメーション
library("animation")
Time_Code=c(0,2*pi/90,pi/90,0,2*pi/90,pi/90,0,2*pi/90,pi/90,0,2*pi/90,pi/90)
saveGIF({
for (i in Time_Code){
　conjugate00(i)
}
}, interval = 0.1, movie.name = "conjugateX_back.gif")
```
**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113204552.gif)

```R
#アニメーション
library("animation")
Time_Code=c(0,pi/60,0,pi/60,0,pi/60,0,pi/60)
saveGIF({
for (i in Time_Code){
　conjugate00(i)
}
}, interval = 0.1, movie.name = "conjugateX_even.gif")
```
そもそも**複素共役**には「**回転の向き**」についての情報が欠落してますから、最後の見え方こそが正解なんですね。

#y軸に沿った展開。
今度は<font color=green>Sin(θ)+Cos(θ)i</font>の場合ですね。やはりアニメーションさせる関数を準備します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/27717576-3237-5ac8-0c72-001fe73e7efa.png)

```R
conjugate01<-function(inbetween){

c0<-seq(0,pi*2,length=61)
c1<-seq(pi/2,2*pi+pi/2,length=61)
cx<-cos(c0)
cy<-sin(c0)

plot(cx,cy,type="l",xlim=c(-1,1),asp=1,ylim=c(-1,1),main="Complex Conjugate",xlab="Cos(θ)",ylab="Sin(θ)i", col=rgb(0,1,0))

#複素共役を結ぶ補助線(座標の半分しか使わない)

segments(cos(c1[2:30]+inbetween),sin(c1[2:30]+inbetween),-cos(c1[2:30]+inbetween),sin(c1[2:30]+inbetween),col=c(200,200,200,200))

abline(h=0,col=rgb(1,0,0))
abline(v=0,col=rgb(1,0,0))

# 凡例を書き添える 。
legend("topright", legend=c("Circle(Radius=1,Augment=θ)","x=y=0"), lty =c(1,1),col=c(rgb(0,1,0),rgb(1,0,0)))
}

conjugate01(0)
```
**アニメーション化**(<font color=blue>y=+1→-1、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113201950.gif)

```R
#アニメーション
library("animation")
Time_Code=c(0,pi/90,2*pi/90,0,pi/90,2*pi/90,0,pi/90,2*pi/90,0,pi/90,2*pi/90)
saveGIF({
for (i in Time_Code){
　conjugate01(i)
}
}, interval = 0.1, movie.name = "conjugateY_back.gif")
```
**アニメーション化**(<font color=blue>y=-1→+1、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113204404.gif)

```R

#アニメーション
library("animation")
Time_Code=c(0,2*pi/90,pi/90,0,2*pi/90,pi/90,0,2*pi/90,pi/90,0,2*pi/90,pi/90)

saveGIF({
for (i in Time_Code){
　conjugate01(i)
}
}, interval = 0.1, movie.name = "conjugateY_forward.gif")
```

**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113205243.gif)

```R

#アニメーション
library("animation")
Time_Code=c(0,pi/60,0,pi/60,0,pi/60,0,pi/60)
saveGIF({
for (i in Time_Code){
　conjugate01(i)
}
}, interval = 0.1, movie.name = "conjugateY_even.gif")

```
そう、**複素共役**は別に軸線に縛られた概念ではないのです。我々が概ね**数直線**(<font color=blue>Number Line</font>)とイメージしている概念の正体が、実は**同心円集合**(<font color=blue>Concentric Circle Set</font>)/**同心球面集合**(<font color=blue>Homocentric Sphere Set</font>)に過ぎない様に…
[]()
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201111/20201111061314.gif)
**直線**<font color="green">y=0</font>を軸線に選ぶとxの値が<font color="green">+1</font>から<font color="green">-1</font>(<font color="blue">-1から+1</font>)にかけて推移するのに対して、yの値は決して<font color="green">0以下</font>(<font color="blue">0以上</font>)にならない。見え方としては反時計回り。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201111/20201111043648.gif)
これは**円関数集合**(<font color=blue>Circle Function Set</font>)でいうと<font color=green>Cos(θ)+Sin(θ)i</font>に該当する。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201108/20201108040152.gif)
**直線**<font color="green">x=0</font>を軸線に選ぶとyの値が<font color="green">+1</font>から<font color="green">-1</font>(<font color="blue">-1から+1</font>)にかけて推移するのに対して、xの値は決して<font color="green">0以下</font>(<font color="blue">0以上</font>)にならない。見え方としては時計回り。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201110/20201110234311.gif)
これは**円関数集合**(<font color=blue>Circle Function Set</font>)でいうと<font color=green>Sin(θ)+Cos(θ)i</font>に該当する。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201110/20201110223555.gif)
という事は…

#そして僕は途方に暮れる。

それでは同時に再生してみましょう。アニメーションさせる関数は以下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/17f10dcb-11eb-ebb6-e7cf-202ad1d15ead.png)

```R

conjugate02<-function(inbetween){

c0<-seq(0,pi*2,length=61)

c1<-seq(pi/2,2*pi+pi/2,length=61)
cx<-cos(c0)
cy<-sin(c0)

plot(cx,cy,type="l",xlim=c(-1,1),asp=1,ylim=c(-1,1),main="Complex Conjugate",xlab="Cos(θ)",ylab="Sin(θ)i", col=rgb(0,1,0))

#複素共役を結ぶ補助線(座標の半分しか使わない)
segments(cos(c0[2:30]+inbetween),sin(c0[2:30]+inbetween),cos(c0[2:30]+inbetween),-sin(c0[2:30]+inbetween),col=c(200,200,200,200))

segments(cos(c1[2:30]+inbetween),sin(c1[2:30]+inbetween),-cos(c1[2:30]+inbetween),sin(c1[2:30]+inbetween),col=c(200,200,200,200))

abline(h=0,col=rgb(1,0,0))
abline(v=0,col=rgb(1,0,0))

# 凡例を書き添える 。
legend("topright", legend=c("Circle(Radius=1,Augment=θ)","x=y=0"), lty =c(1,1),col=c(rgb(0,1,0),rgb(1,0,0)))
}

conjugate02(0)
```
**アニメーション化**(<font color=blue>x=y=+1→-1、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113210443.gif)

```R

#アニメーション
library("animation")
Time_Code=c(0,pi/90,2*pi/90,0,pi/90,2*pi/90,0,pi/90,2*pi/90,0,pi/90,2*pi/90)
saveGIF({
for (i in Time_Code){
　conjugate02(i)
}
}, interval = 0.1, movie.name = "conjugateXY_back.gif")
```
**アニメーション化**(<font color=blue>x=y=-1→+1、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113211050.gif)

```R

#アニメーション
library("animation")
Time_Code=c(0,2*pi/90,pi/90,0,2*pi/90,pi/90,0,2*pi/90,pi/90,0,2*pi/90,pi/90)

saveGIF({
for (i in Time_Code){
　conjugate02(i)
}
}, interval = 0.1, movie.name = "conjugateXY_forward.gif")
```
**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113211244.gif)

```R
#アニメーション
library("animation")
Time_Code=c(0,pi/60,0,pi/60,0,pi/60,0,pi/60)
saveGIF({
for (i in Time_Code){
　conjugate02(i)
}
}, interval = 0.1, movie.name = "conjugateXY_even.gif")
```
**なんじゃこりゃ〜!!**(<font color=blue>by 松田優作</font>)
[ジーパン刑事の「殉職シーン」は上下白のジーパンスタイル　セリフはすべてアドリブだった](https://www.iza.ne.jp/kiji/entertainments/news/191112/ent19111220360036-n1.html)

* 目を凝らせば確かに「**x軸に沿った展開**」と「**y軸に沿った展開**」を抽出して目で追う事が出来る。
* だが本能が、これがあるべき「**x軸に沿った展開**」と「**y軸に沿った展開**」の合成結果ではないと必死に告げてくる。**違和感が…違和感が仕事をする!!**

[「違和感仕事しろ」とは【ピクシブ百科事典】](https://dic.pixiv.net/a/%E9%81%95%E5%92%8C%E6%84%9F%E4%BB%95%E4%BA%8B%E3%81%97%E3%82%8D)
そう、人間がつい期待してしまうのは、上掲図を「<font color=red>側面図</font>」と見立てた場合の「<font color=red>正面図</font>」に当たる何か。例えばこんな感じの…
[【初心者向け】誤差関数(ERF=Error Function)と相補誤差関数 (ERFC=Complementary Error Function)。](https://qiita.com/ochimusha01/items/ee8b32e4b2cc7ce4acb0)
**アニメーション化**(<font color=blue>x=y=0→±1、中割り二枚</font>)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201116%2F20201116225028.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=72ded95eab30cde74058e20dab73161e)
**アニメーション化**(<font color=blue>x=y=±1→0、中割り二枚</font>)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201116%2F20201116230002.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=4feef9802cfef830ea63ea0a3994d86d)
**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201116%2F20201116230848.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=0489492d3b778bcf1b6c8b3886af31c4)

こういう見え方も存在します。辺縁部が**観測原点**(<font color=blue>Observation Origin</font>)を**北極**(<font color=blue>Arctic</font>)に置いた場合の**南極**(<font color=blue>Antarctic</font>)に該当する、すなわち重力レンズ効果で裏側まで見通せるブラックホールの見え方。ただし「**裏側の景色**(<font color=blue>The Other Side of the World</font>)」は**事象の地平線**(<font color=blue>Event Horizon</font>)に近過ぎてすっかり潰れてしまっているので「**誤差**(<font color=blue>Error</font>)」として視界から切り捨てられてしまうのです。
[重力レンズ - Wikipedia](https://ja.wikipedia.org/wiki/%E9%87%8D%E5%8A%9B%E3%83%AC%E3%83%B3%E3%82%BA)
[重力レンズとは](http://cosmos.phys.sci.ehime-u.ac.jp/~tani/Cosmos/PressRelease/lensing.html)

**アニメーション化**(<font color=blue>x=y=0→±1、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113140726.gif)
**アニメーション化**(<font color=blue>x=y=±1→0、中割り二枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113141108.gif)
**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201113/20201113141517.gif)
何故教えてくれなかったんだ、ガウス!! 
[【無限遠点を巡る数理】無限遠点としての正規分布と分散概念の歴史 - Qiita](https://qiita.com/ochimusha01/items/15326f0c787a55f174cc)

#pythonによる実装
(2021年03月20日)Python部分の追加。
無駄に早いぞ、Python!!

##x軸に沿った展開(関数基本部)。

```python
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
import matplotlib.animation as animation

#単位円データ作成
c0=num.linspace(0,2*m.pi,61,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)

#複素共役データ作成

#描画準備
plt.style.use('default')
fig = plt.figure(111)

#関数定義
def Complex_Conjugated_Sphere(n):
    plt.cla()
    #共益線描画
    for nm in range(2,30):
        plt.plot([m.cos(c0[nm]+Time_code[n]),m.cos(c0[nm]+Time_code[n])],[m.sin(c0[nm]+Time_code[n]),-m.sin(c0[nm]+Time_code[n])],color="black",lw=0.5);    
    #円周描画
    plt.plot(s1.real,s1.imag,color="green", label="Unit Cylinder")
    
    plt.ylim([-1.1,1.1])
    plt.xlim([-1.1,1.1])
    plt.title("Complex Conjugated Sphere")
    plt.xlabel("Real")
    plt.ylabel("Imaginal")
    ax = fig.add_subplot()
    ax.set_aspect('equal', adjustable='box')
    ax.legend(loc='upper right')
    #補助線描画
    plt.axvline(0, 0, 1,color="red")
    plt.axhline(0, 0, 1,color="red")
```
**アニメーション化**(<font color=blue>y=+1→-1、中割り二枚</font>)
![output112.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/b58b3967-1345-3ce4-4cd0-bbc86cb54c05.gif)

```python
Time_code=[0,m.pi/90,2*m.pi/90,0,m.pi/90,2*m.pi/90,0,m.pi/90,2*m.pi/90,0,m.pi/90,2*m.pi/90]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output112.gif", writer="pillow")
```
**アニメーション化**(<font color=blue>x=y=-1→+1、中割り二枚</font>)
![output113.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/e24fba43-9a0b-6903-e54b-8519db1cd70d.gif)

```python
Time_code=[0,2*m.pi/90,m.pi/90,0,2*m.pi/90,m.pi/90,0,2*m.pi/90,m.pi/90,0,2*m.pi/90,m.pi/90]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output113.gif", writer="pillow")
```
**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![output111.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/98cb3b85-8775-d5ac-4f21-5608fbb7db13.gif)

```python
Time_code=[0,m.pi/60,0,m.pi/60,0,m.pi/60,0,m.pi/60]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output111.gif", writer="pillow")
```

##Y軸に沿った展開(関数基本部)。

```python
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
import matplotlib.animation as animation

#単位円データ作成
c0a=num.linspace(0,2*m.pi,61,endpoint = True)
c0=num.concatenate([c0a[15:45],c0a[46:60],c0a[0:16]])
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)

#複素共役データ作成

#描画準備
plt.style.use('default')
fig = plt.figure(111)

#関数定義
def Complex_Conjugated_Sphere(n):
    plt.cla()
    #共益線描画
    for nm in range(2,30):
        plt.plot([m.cos(c0[nm]+Time_code[n]),-m.cos(c0[nm]+Time_code[n])],[m.sin(c0[nm]+Time_code[n]),m.sin(c0[nm]+Time_code[n])],color="black",lw=0.5);    
    #円周描画
    plt.plot(s1.real,s1.imag,color="green", label="Unit Cylinder")
    
    plt.ylim([-1.1,1.1])
    plt.xlim([-1.1,1.1])
    plt.title("Complex Conjugated Sphere")
    plt.xlabel("Real")
    plt.ylabel("Imaginal")
    ax = fig.add_subplot()
    ax.set_aspect('equal', adjustable='box')
    ax.legend(loc='upper right')
    #補助線描画
    plt.axvline(0, 0, 1,color="red")
    plt.axhline(0, 0, 1,color="red")
```
**アニメーション化**(<font color=blue>y=+1→-1、中割り二枚</font>)
![output115.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/4649cec2-5eec-33ea-1197-14c5051f048d.gif)

```python
Time_code=[0,m.pi/90,2*m.pi/90,0,m.pi/90,2*m.pi/90,0,m.pi/90,2*m.pi/90,0,m.pi/90,2*m.pi/90]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output116.gif", writer="pillow")
```
**アニメーション化**(<font color=blue>x=y=-1→+1、中割り二枚</font>)
![output116.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/f063ec80-1d08-c2ac-663f-22d044bddebe.gif)

```python
Time_code=[0,2*m.pi/90,m.pi/90,0,2*m.pi/90,m.pi/90,0,2*m.pi/90,m.pi/90,0,2*m.pi/90,m.pi/90]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output116.gif", writer="pillow")
```

**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![output114.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/161ed342-36aa-8db1-c463-f1ea040eb6d9.gif)

```python
Time_code=[0,m.pi/60,0,m.pi/60,0,m.pi/60,0,m.pi/60]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output114.gif", writer="pillow")
```

##XY軸に沿った同心円展開(関数基本部)。

```python
import math as m
import cmath as c
import numpy as num
import matplotlib.pyplot as plt
import matplotlib.animation as animation

#単位円データ作成
c0=num.linspace(0,2*m.pi,61,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=num.array(s0)

#複素共役データ作成

#描画準備
plt.style.use('default')
fig = plt.figure(111)

#関数定義
def sin_scale(x):
    return ((0+1j)**(2*x)).imag
def Complex_Conjugated_Sphere(n):
    plt.cla()
    #共益線描画
    z0=num.linspace(0,1/2,16)
    for nm in z0:
        plt.plot(s1.real*sin_scale(nm+Time_code[n]),s1.imag*sin_scale(nm+Time_code[n]),color="black",lw=0.5);    
    #円周描画
    plt.plot(s1.real,s1.imag,color="green", label="Unit Cylinder")
    
    plt.ylim([-1.1,1.1])
    plt.xlim([-1.1,1.1])
    plt.title("Complex Conjugated Sphere")
    plt.xlabel("Real")
    plt.ylabel("Imaginal")
    ax = fig.add_subplot()
    ax.set_aspect('equal', adjustable='box')
    ax.legend(loc='upper right')
    #補助線描画
    plt.axvline(0, 0, 1,color="red")
    plt.axhline(0, 0, 1,color="red")
```
**アニメーション化**(<font color=blue>内側→外側、中割り二枚</font>)
![output122.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/73f4e82d-c60f-8f38-c1c5-7931eb9ca82e.gif)

```python
Time_code=[0,1/90,2/90,0,1/90,2/90,0,1/90,2/90,0,1/90,2/90]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output122.gif", writer="pillow")
```
**アニメーション化**(<font color=blue>外側→内側、中割り二枚</font>)
![output123.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/520233a5-250b-4193-3416-13d519f561a8.gif)

```python
Time_code=[0,2/90,1/90,0,2/90,1/90,0,2/90,1/90,0,2/90,1/90]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output123.gif", writer="pillow")
```

**アニメーション化**(<font color=blue>どちらにも見える、中割り一枚</font>)
![output121.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0aeed895-bafb-002c-82f5-2565c3145d80.gif)

```python
Time_code=[0,1/60,0,1/60,0,1/60,0,1/60,0,1/60,0,1/60]
ani = animation.FuncAnimation(fig, Complex_Conjugated_Sphere, interval=50,frames=len(Time_code))
ani.save("output121.gif", writer="pillow")
```
そんな感じで以下続報…