| spin3d | 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,
dev = cur3d(), subscene = par3d("listeners", dev = dev))
axis |
The desired axis of rotation |
rpm |
The rotation speed in rotations per minute |
dev |
Which RGL device to use |
subscene |
Which subscene to use |
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.
Prior to rgl version 0.95.1476, the
subscene argument defaulted to the
current subscene, and any additional entries would
be ignored by play3d. The current
default value of par3d("listeners", dev = dev) means that all subscenes that share
mouse responses will also share modifications
by this function.
Duncan Murdoch
play3d to play the animation
# Spin one object
open3d()
plot3d(oh3d(col = "lightblue", alpha = 0.5))
if (!rgl.useNULL() && interactive())
play3d(spin3d(axis = c(1, 0, 0), rpm = 30), duration = 2)
# Show spinning sprites, and rotate the whole view
open3d()
spriteid <- NULL
spin1 <- spin3d(rpm = 4.5 ) # the scene spinner
spin2 <- spin3d(rpm = 9 ) # the sprite spinner
f <- function(time) {
par3d(skipRedraw = TRUE) # stops intermediate redraws
on.exit(par3d(skipRedraw = FALSE)) # redraw at the end
pop3d(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() && interactive())
play3d(f, duration = 2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.