| rgl.setMouseCallbacks {rgl} | R Documentation |
This function sets user callbacks on mouse events.
rgl.setMouseCallbacks(button, begin = NULL, update = NULL, end = NULL)
button |
Which button? |
begin |
Called when mouse down event occurs |
update |
Called when mouse moves |
end |
Called when mouse is released |
This function sets an event handler on mouse events that occur within the current rgl window.
The begin and update events should be functions taking two arguments; these
will be the mouse coordinates when the event occurs. The end event handler
takes no arguments.
Alternatively, the handlers may be set to NULL, the default value, in which case
no action will occur.
This function is called for the side effect of setting the mouse event handlers.
Duncan Murdoch
par3d to set built-in handlers
## Not quite right --- this doesn't play well with rescaling
pan3d <- function(button) {
start <- list()
begin <- function(x, y) {
start$userMatrix <<- par3d("userMatrix")
start$viewport <<- par3d("viewport")
start$scale <<- par3d("scale")
start$projection <<- rgl.projection()
start$pos <<- rgl.window2user( x/start$viewport[3], 1 - y/start$viewport[4], 0.5,
projection=start$projection)
}
update <- function(x, y) {
xlat <- (rgl.window2user( x/start$viewport[3], 1 - y/start$viewport[4], 0.5,
projection = start$projection) - start$pos)*start$scale
mouseMatrix <- translationMatrix(xlat[1], xlat[2], xlat[3])
par3d(userMatrix = start$userMatrix %*% t(mouseMatrix) )
}
rgl.setMouseCallbacks(button, begin, update)
cat("Callbacks set on button", button, "of rgl device",rgl.cur(),"\n")
}
pan3d(3)