とりあえず現在取り掛かってるプログラムが以下。
統計言語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")
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")
逆に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")
あ、これが、かの有名な…
ノナちゃん見てる?見てる?
— 結城浩 (@hyuki) February 7, 2019
たくさんのリサージュ曲線! https://t.co/e8VxbC8BfF
ではここで問題です。①この動画で何箇所か円が出てくる場所があります。それはどこ?②放物線に見える場所もあります。それはどこ?これは本当に放物線かな?
— 結城浩 (@hyuki) February 7, 2019
こりゃすごい☆(´~`) 行と列は同じなのに ものが4分の1ずれてるだけで 模様がいろいろだぜ☆(´~`)
— むずでょ@きふわらべ第29回世界コンピューター将棋選手権一次予選36位 (@muzudho1) February 7, 2019
というか ぴったり 1~7周かだぜ☆(´~`) 掛け算の表みたいにならんかな~☆(´~`)
— むずでょ@きふわらべ第29回世界コンピューター将棋選手権一次予選36位 (@muzudho1) February 7, 2019
比が1のところは丸、比が0.5のところは ハッチャンだぜ☆(´~`)寝よ☆(´~`)Zzzz
— むずでょ@きふわらべ第29回世界コンピューター将棋選手権一次予選36位 (@muzudho1) February 7, 2019
まさに最後の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