# rgl.user2window: Convert between rgl user and window coordinates In rgl: 3D Visualization Using OpenGL

## Description

This function converts from 3-dimensional user coordinates to 3-dimensional window coordinates.

## Usage

 ```1 2 3``` ```rgl.user2window(x, y = NULL, z = NULL, projection = rgl.projection()) rgl.window2user(x, y = NULL, z = 0, projection = rgl.projection()) rgl.projection() ```

## Arguments

 `x, y, z` Input coordinates. Any reasonable way of defining the coordinates is acceptable. See the function `xyz.coords` for details. `projection` The rgl projection to use

## 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.

## Author(s)

Ming Chen / Duncan Murdoch

`select3d`
 ``` 1 2 3 4 5 6 7 8 9 10``` ```open3d() points3d(rnorm(100), rnorm(100), rnorm(100)) 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) } ```