Convert between RGL user and window coordinates
rgl.user2window.RdThis function converts from 3-dimensional user coordinates to 3-dimensional window coordinates.
Usage
rgl.user2window(x, y = NULL, z = NULL, projection = rgl.projection())
rgl.window2user(x, y = NULL, z = 0, projection = rgl.projection())
rgl.projection(dev = cur3d(), subscene = currentSubscene3d(dev))Arguments
- x, y, z
Input coordinates. Any reasonable way of defining the coordinates is acceptable. See the function
xyz.coordsfor details.- projection
The RGL projection to use
- dev, subscene
The RGL device and subscene to work with
Details
These functions convert between user coordinates and window coordinates.
Window coordinates run from 0 to 1 in X, Y, and Z. X runs from 0 on the left to 1 on the right; Y runs from 0 at the bottom to 1 at the top; Z runs from 0 foremost to 1 in the background. RGL does not currently display vertices plotted outside of this range, but in normal circumstances will automatically resize the display to show them. In the example below this has been suppressed.
Value
The coordinate conversion functions produce a matrix with columns corresponding to the X, Y, and Z coordinates.
rgl.projection() returns a list containing the following components:
- model
the modelview matrix
- projection
the projection matrix
- viewport
the viewport vector
See par3d for more details.
Examples
open3d()
points3d(rnorm(100), rnorm(100), rnorm(100))
3D plot
if (interactive() || !.Platform$OS == "unix") {
# Calculate a square in the middle of the display and plot it
square <- rgl.window2user(c(0.25, 0.25, 0.75, 0.75, 0.25),
c(0.25, 0.75, 0.75, 0.25, 0.25), 0.5)
par3d(ignoreExtent = TRUE)
lines3d(square)
par3d(ignoreExtent = FALSE)
}