persp3d ドキュメントの次の例に従って、画像を球体にマップしようとしています。
lat <- matrix(seq(90,-90, len=50)*pi/180, 50, 50, byrow=TRUE)
long <- matrix(seq(-180, 180, len=50)*pi/180, 50, 50)
r <- 6378.1 # radius of Earth in km
x <- r*cos(lat)*cos(long)
y <- r*cos(lat)*sin(long)
z <- r*sin(lat)
open3d()
persp3d(x, y, z, col="white",
texture=system.file("textures/worldsmall.png",package="rgl"),
specular="black", axes=FALSE, box=FALSE, xlab="", ylab="", zlab="",
normal_x=x, normal_y=y, normal_z=z)
最終的には、球体上の特定の点にオブジェクトを追加する必要があるため、画像ファイル内のどのピクセル座標がどの x、y、z (または緯度、経度) の値に対応するかを知る必要があります。つまり、worldsmall.png を想定して persp3d とはどのような地図投影法ですか? (persp3d は明らかに球体に限定されていないため、従来の地図投影にうまくマッピングされるとは思っていませんが、ある座標セットを別の座標セットに変換するためのアルゴリズムが必要です。)