トーラス上の経線・緯線

  • こちらで、正方形の対辺を貼り合わせてできるトーラスを作った
  • この正方形に格子座標があると、トーラス上にその対応格子ができる
  • それを描こう
  • 緯線のほとんどは水平方向の平行線だが、縦切りがあるのがわかる。それは、描図上のごみ
  • 同じく、経線のほとんどは縦切りだが、水平線もあるのがわかる。それは描図上のごみ

http://www.genome.med.kyoto-u.ac.jp/StatGenet/testRY20110208/keisenIsen.png

  • 経線・緯線を合わせて描く

http://www.genome.med.kyoto-u.ac.jp/StatGenet/testRY20110208/keisenIsen2.png

  • 正方形の辺を「無限遠」とみなすと、正方格子は、辺縁に行くにつれ、「密」になる。それをトーラス上にすると次のようになる

http://www.genome.med.kyoto-u.ac.jp/StatGenet/testRY20110208/mugen.png

# 1辺の長さが2の正方形(原点を中心に(1,1),(1,-1),(-1,1),(-1,-1)の4点を頂点とする正方形
# 縦横とも、端から端まで2/(gr-1)の幅で刻む
gr<-51 
xsq<-seq(from=-1,to=1,length=gr)
ysq<-xsq

xysq<-expand.grid(xsq,ysq)

R1<-1/pi
R2<-1/pi

# 緯線座標
Xsq<-R1*sin(2*pi*xysq[,1])+R2*sin(2*pi*xysq[,2])*sin(2*pi*xysq[,1])
Ysq<-R1*cos(2*pi*xysq[,1])+R2*sin(2*pi*xysq[,2])*cos(2*pi*xysq[,1])
Zsq<-R2*cos(2*pi*xysq[,2])
plot3d(Xsq,Ysq,Zsq,type="l")

# 経線座標
Xsq2<-R1*sin(2*pi*xysq[,2])+R2*sin(2*pi*xysq[,1])*sin(2*pi*xysq[,2])
Ysq2<-R1*cos(2*pi*xysq[,2])+R2*sin(2*pi*xysq[,1])*cos(2*pi*xysq[,2])
Zsq2<-R2*cos(2*pi*xysq[,1])
open3d()
plot3d(Xsq2,Ysq2,Zsq2,type="l")

# 連結する
Xsq3<-c(Xsq,Xsq2)
Ysq3<-c(Ysq,Ysq2)
Zsq3<-c(Zsq,Zsq2)
# 経線と緯線の色を塗り分ける
open3d()
plot3d(Xsq3,Ysq3,Zsq3,type="l",col=c(rep(2,length(xysq[,1])),rep(3,length(xysq[,1]))))

# atan()関数を用いて、辺縁に密な幅を発生させて描きなおす
gr<-501
t<-seq(from=-1,to=1,length=gr)
xsq<-sin
ysq<-xsq

xysq<-expand.grid(xsq,ysq)

R1<-1/pi
R2<-1/pi
Xsq<-R1*sin(2*pi*xysq[,1])+R2*sin(2*pi*xysq[,2])*sin(2*pi*xysq[,1])
Ysq<-R1*cos(2*pi*xysq[,1])+R2*sin(2*pi*xysq[,2])*cos(2*pi*xysq[,1])
Zsq<-R2*cos(2*pi*xysq[,2])

Xsq2<-R1*sin(2*pi*xysq[,2])+R2*sin(2*pi*xysq[,1])*sin(2*pi*xysq[,2])
Ysq2<-R1*cos(2*pi*xysq[,2])+R2*sin(2*pi*xysq[,1])*cos(2*pi*xysq[,2])
Zsq2<-R2*cos(2*pi*xysq[,1])

Xsq3<-c(Xsq,Xsq2)
Ysq3<-c(Ysq,Ysq2)
Zsq3<-c(Zsq,Zsq2)

plot3d(Xsq,Ysq,Zsq,type="l")
open3d()
plot3d(Xsq2,Ysq2,Zsq2,type="l")
open3d()
plot3d(Xsq3,Ysq3,Zsq3,type="l",col=c(rep(2,length(xysq[,1])),rep(3,length(xysq[,1]))))