gluUnProject
Prev | GLU | Next

## Name

gluUnProject — map window coordinates to object coordinates

## C Specification

`GLint `gluUnProject`` | `(` | `GLdouble `winX`, GLdouble `winY`, GLdouble `winZ`, const GLdouble *`model`, const GLdouble *`proj`, const GLint *`view`, GLdouble* `objX`, GLdouble* `objY`, GLdouble* `objZ`);`

## Python Specification

``gluUnProject`` | `(` | ``winX`, `winY`, `winZ`, `model` = `None`, `proj` = `None`, `view` = `None`) → (`objX`, `objY`, `objZ`)`

## Parameters

`winX`, `winY`, `winZ`
  Specify the window coordinates to be mapped.
`model`
  Specifies the modelview matrix (as from a `glGetDoublev` call).
`proj`
  Specifies the projection matrix (as from a `glGetDoublev` call).
`view`
  Specifies the viewport (as from a `glGetIntegerv` call).
`objX`, `objY`, `objZ`
  Returns the computed object coordinates.

## Description

`gluUnProject` maps the specified window coordinates into object coordinates using `model`, `proj`, and `view`. The result is stored in `objX`, `objY`, and `objZ`. A return value of `GL_TRUE` indicates success; a return value of `GL_FALSE` indicates failure.

To compute the coordinates (`objX`, `objY`, and `objZ`), `gluUnProject` multiplies the normalized device coordinates by the inverse of `model`*`proj` as follows:

( objX objY objZ W ) = INV ( P M ) ( 2 ( winX - view [ 0 ] ) view [ 2 ] - 1 2 ( winY - view [ 1 ] ) view [ 3 ] - 1 2 ( winZ ) - 1 1 )

INV ( ) denotes matrix inversion. W is an unused variable, included for consistent matrix notation.

## See Also

glGet, gluProject

Prev | Up | Next
gluTessVertex | Home | gluUnProject4