Hello,
I'm trying to add a colorbar to a 3d map using rgl.
For this purpose, I draw the map in a similar way of persp3d example :
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)
then I add a basic colorbar drawing several 3d colored cubes and label them
using text3d
shapelist3d(cube3d(), x,y,z, col=grey.colors(5),add=T)
text3d(x+dx,y+dy,z+dz,"label")
The results is ok (if someone know a better way to do it, please tell me how)
Now I would like to improve the result and in particular I would like to have a
static colorbar (stick to a plan parallel to the window) when I rotate the
"earth".
My first idea is to redefine the rotation button using rgl.setMouseCallbacks
and then pop and redraw colorbar in update fonction of rgl.setMouseCallback.
1/ Is it a good idea ?
2/ How to get angle and x,y,z value to compute rotationMatrix(angle,x,y,z) from
window coordinates ?
3/ Is it possible, in the same idea, to have a static colorbar when I zoom on a
earth region ?
I hope my question is clear (as you see I am not a native english speaker) and
thank you for your answers.
[[alternative HTML version deleted]]