XY軸(円弧)
ZX軸(Cos波)
ZY軸(Sin波)
円描写1周を1周期とする「単位円筒(Unit Sylinder)」の概念はそれなりに美しいのですが「(無限小の辺長の無限大の辺数を有する)円そのもの(Circle itself)をコンピューター上で扱う上で60角形と解釈する」といった立場を採用せざるを得ないXY面に対応するにはXZ面やYZ面でも「2π/60分割=π/30分割」といった考え方の導入が不可避となるのでした。
①とりあえず周期分割を増やすと、こういう外観に…とりあえずこれを「基本円柱(Basic Cylinder)」と呼ぶ事にします。
円柱を描く
libraly(rgl)
radians<-seq(0,120*pi,length=5000)
f0<-function(x){exp(x*(0+1i))}
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime<-seq(0,2,length=3000)
plot3d(Real,Imaginal,Rtime,type="l",xlim=c(-1,1),ylim=c(-1,1),zlim=c(0,2))movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test03")
②ところで所謂「ピタゴラスの定理」は対象数列に「曲率」を付与します。対象が線分の場合は所謂「半円」しか構成し得ませんが「基本円柱(Basic Cylinder)」だと球面が構成されるのです。
球を描く
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<-seq(0,2,length=3000)
#工夫
f1<-function(x){sqrt(1-x^2)}
c0<-seq(-1,1,length=3000)
c1<-f1(c0)
#> plot(c0,c1,type="l",xlim=c(-1,1),ylim=c(0,1))
Real_c<-Real*c1
Imaginal_c<-Imaginal*c1plot3d(Real_c,Imaginal_c,Rtime,type="l",xlim=c(-1,1),ylim=c(-1,1),zlim=c(0,2))
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test01")
③ところでピタゴラスの定理に従って円柱に曲率を付与する方法は1つではありません。というよりむしろトーラス構造を形成する方向に作用するのが普通とすら言えそうなのです。
トーラスを描くその1 平面トーラス(折り返し円柱)を準備する。
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")
トーラスを描くその2 平面トーラス(折り返し円柱)に曲率を設定。
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")
トーラス描写の時系列分割(折り返し円柱に途中で真逆の曲率を設定)。
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")
④それでは、所謂「正2辺形(Regular bilateral)」の場合は?
「2辺形」を描く(空間上の見え方)
libraly(rgl)
#1個目
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime<-seq(0,2,length=3000)
#工夫
f1<-function(x){sqrt(1-x^2)}
c0<-seq(-1,1,length=3000)
c1<-f1(c0)
#> plot(c0,c1,type="l",xlim=c(-1,1),ylim=c(0,1))
Real_c<-Real*c1
Imaginal_c<-Imaginal*c1
#2個目
Rtime2<-seq(2,0,length=3000)
描画plot3d(c(Real_c,Real_c),c(Imaginal_c,Imaginal_c),c(Rtime,Rtime2),type="l",xlim=c(-1,1),ylim=c(-1,1),zlim=c(0,2))
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test01")
ぴったり重なっているので色が濃くなった様にしか見えませんが「1方向から-1方向」と「-1方向から1方向へ」の2度書きしています。従って描画過程の時系列を明示すると以下の様に二段球面が現れるのです。
*アスペクト比の関係でZ方向に潰れてしまっているのは御容赦の程を。
「2辺形」を描く(描画過程の時系列明示)
libraly(rgl)
#1個目
radians<-seq(0,60*pi,length=3000)
f0<-function(x){exp(x*(0+1i))}
Real<-Re(f0(radians))
Imaginal<-Im(f0(radians))
Rtime<-seq(0,2,length=3000)
#工夫
f1<-function(x){sqrt(1-x^2)}
c0<-seq(-1,1,length=3000)
c1<-f1(c0)
#> plot(c0,c1,type="l",xlim=c(-1,1),ylim=c(0,1))
Real_c<-Real*c1
Imaginal_c<-Imaginal*c1
#2個目
Rtime2<-seq(2,4,length=3000)
描画plot3d(c(Real_c,Real_c),c(Imaginal_c,Imaginal_c),c(Rtime,Rtime2),type="l",xlim=c(-1,1),ylim=c(-1,1),zlim=c(0,4))
movie3d(spin3d(axis=c(0,0,1),rpm=5),duration=10,fps=25,movie="~/Desktop/test01")
アスペクト比の自動調整機能のせいで饅頭を積み重ねたみたいに…