Rで地球を回す

この記事は R Advent Calendar 2020の5日目の記事です。


まずはコードを載せる

library(rgl)

world <- read.table("./world_50m.txt", header = F)  #edge of world
R <- 6371*10^3

x_one <- R*sin((world$V2-90)*(pi/180))*cos((world$V1)*(pi/180))
y_one <- R*sin((world$V2-90)*(pi/180))*sin((world$V1)*(pi/180))
z_one <- R*cos((world$V2-90)*(pi/180))

plot3d(x_one, y_one, z_one, xlim = c(-R,R), ylim = c(-R,R), zlim = c(-R,R), xlab = ""
       , ylab = "", zlab = "", col = "black", size = "1")+
  title3d(main = "globe")+
  spheres3d(0,0,0,radius = R, color = "ivory")

実行結果


world_50m.txtは http://www.gnuplotting.org/tag/4-6/ から拝借したデータです。

本コードではそれぞれの角度のデータから直交座標に変換してプロットしている。

Rは一応地球の半径にしている。

あとはrglと3dplotで3次元プロットすれば手元で動かせる地球儀が完成する。

Avatar
ゲッタ〜
機械学習エンジニア

プログラミングが好き