「諸概念の迷宮(Things got frantic)」用語集

本編で頻繁に使うロジックと関連用語のまとめ。

【3次元回転情報倉庫】怪しい「タクト棒」の動き?

f:id:ochimusha01:20191011173444j:plain

とりあえず現在取り掛かってるプログラムが以下。

 統計言語Rによる作画例(緯度と経度の回転)

#複素平面(球面)
Circle_Divide<-60 #円分割数
Complex_plane01<-function(x){

#グラフのスケール決定
Graph_scale_x<-c(-1,1)
Graph_scale_y<-c(-1,1)
#円弧描写の準備
theta <- seq(0,2*pi,length=Circle_Divide)
cercle01<-exp(theta*(0+1i))
crcl_r<-Re(cercle01)
crcl_i<-Im(cercle01)

#XY軸沿いの回転
xy_radian<-Re(x)
XY_Rotation_ratio<-cos(2*xy_radian/Circle_Divide*2*pi)/2+0.5
XYR_cos=crcl_r
XYR_sin=crcl_i*XY_Rotation_ratio

#塗り潰し色(「右」が緑、「左」が赤
ifelse*1
#Z軸沿いの回転
z_radian<-Im(x)
Z_Rotation_ratio<-z_radian/Circle_Divide*pi*2
XYZ_Rotation<-complex(real=XYR_cos,imaginary=XYR_sin)*(cos(Z_Rotation_ratio)+sin(Z_Rotation_ratio)*(0+1i))
XYZ_Rotation_cos<-Re(XYZ_Rotation)
XYZ_Rotation_sin<-Im(XYZ_Rotation)

#Z軸沿いの回転(インジケーター)

ing<-complex(real=0,imaginary=crcl_i[xy_radian])*(cos(Z_Rotation_ratio)+sin(Z_Rotation_ratio)*(0+1i))

Ing_r<-Re(ing)
Ing_i<-Im(ing) 

#円弧描写
plot(crcl_r, crcl_i,asp=1,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,0,0), main="Latitude & Longitude", xlab="Real numbers", ylab="Imaginary numbers")
par(new=T)#上書き指定

#円弧の描写(回転)
plot(XYZ_Rotation_cos,XYZ_Rotation_sin,asp=1,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",main="", xlab="", ylab="")
segments(Ing_r,Ing_i,0,0,col=LR_color,lwd=2)
text(Ing_r,Ing_i,"x",col=LR_color)
text(0,0,"x",col=LR_color)
#円の塗り潰し
polygon(XYZ_Rotation_cos, #x
XYZ_Rotation_sin, #y
density=c(50*(1-XY_Rotation_ratio)), #塗りつぶす濃度
angle=c(45),     #塗りつぶす斜線の角度
col=LR_color)  #塗りつぶす色
}

XY軸とZ軸を同時に回すと思わぬ動きとなります。

XY軸の周期とY軸の周期を同じに設定。

library("animation")
#アニメーションさせてみる。
TC00=seq(0,2*pi,length=30)
TC01<-round(TC00/(2*pi)*Circle_Divide, digits = 0)
TC02<-TC01[TC01>=1 & TC01<=60 ]
Time_Code<-complex(re=TC02, im=TC02)
saveGIF({
for (i in Time_Code){
  Complex_plane01(i)
}
}, interval = 0.1, movie.name = "LaLo03.gif")

f:id:ochimusha01:20191011011213g:plain

XY軸の周期をY軸の周期の倍に設定。

library("animation")
#アニメーションさせてみる。
TCA0=seq(0,2*pi,length=60)
TCA1<-round(TCA0/(2*pi)*Circle_Divide, digits = 0)
TCB2<-TCA1[TCA1>=1 & TCA1<=60 ]
TCB0=seq(0,2*pi,length=30)
TCB1<-round(TCB0/(2*pi)*Circle_Divide, digits = 0)
TCB2<-TCA1[TCB1>=1 & TCB1<=60 ]
TCB3<-c(TCB2,TCB2)
Time_Code<-complex(re=TCA3, im=TCB2)
saveGIF({
for (i in Time_Code){
  Complex_plane01(i)
}
}, interval = 0.1, movie.name = "LaLo05.gif")

f:id:ochimusha01:20191011172651g:plain

逆にY軸の周期をXY軸の周期の倍に設定。

library("animation")
#アニメーションさせてみる。
TCA0=seq(0,2*pi,length=30)
TCA1<-round(TCA0/(2*pi)*Circle_Divide, digits = 0)
TCA2<-TCA1[TCA1>=1 & TCA1<=60 ]
TCA3<-c(TCA2,TCA2)
TCB0=seq(0,2*pi,length=60)
TCB1<-round(TCB0/(2*pi)*Circle_Divide, digits = 0)
TCB2<-TCB1[TCB1>=1 & TCB1<=60 ]
Time_Code<-complex(re=TCA3, im=TCB2)
saveGIF({
for (i in Time_Code){
  Complex_plane01(i)
}
}, interval = 0.1, movie.name = "LaLo05.gif")

f:id:ochimusha01:20191011022034g:plain

 あ、これが、かの有名な…

 まさに最後のTweetの通りだ…

*1:xy_radian%/%(Circle_Divide/4)==1 ||xy_radian%/%(Circle_Divide/4)==2),LR_color<-rgb(1,0,0),LR_color<-rgb(0,1,0