| spin3d {rgl} | R Documentation |
This creates a function to use with play3d to
spin an rgl scene at a fixed rate.
spin3d(axis = c(0, 0, 1), rpm = 5)
axis |
The desired axis of rotation |
rpm |
The rotation speed in rotations per minute |
A function with header function(time, base=M), where M
is the result of par3d("userMatrix") at the time the function
is created. This function
calculates and returns a list containing userMatrix updated by
spinning the base matrix for time seconds at rpm revolutions per
minute about the specified axis.
Duncan Murdoch
play3d to play the animation
# Spin one object
open3d()
plot3d(oh3d(col="lightblue", alpha=0.5))
if (!rgl.useNULL())
play3d(spin3d(axis=c(1,0,0), rpm=20), duration=3)
# Show spinning sprites, and rotate the whole view
open3d()
spriteid <- NULL
spin1 <- spin3d(rpm=3 ) # the scene spinner
spin2 <- spin3d(rpm=6 ) # the sprite spinner
f <- function(time) {
par3d(skipRedraw = TRUE) # stops intermediate redraws
on.exit(par3d(skipRedraw=FALSE)) # redraw at the end
rgl.pop(id=spriteid) # delete the old sprite
cubeid <- shade3d(cube3d(), col="red")
spriteid <<- sprites3d(0:1, 0:1, 0:1, shape=cubeid,
userMatrix=spin2(time,
base=spin1(time)$userMatrix)$userMatrix)
spin1(time)
}
if (!rgl.useNULL())
play3d(f, duration=3)