Name

gluUnProject4 - map window and clip coordinates to object coordinates

C Specification

GLint gluUnProject4(GLfloat winX,
GLfloat winY,
GLfloat winZ,
GLfloat clipW,
const GLfloat*  model,
const GLfloat*  proj,
const GLint*  view,
GLfloat nearVal,
GLfloat farVal,
GLfloat*  objX,
GLfloat*  objY,
GLfloat*  objZ,
GLfloat*  objW);

Parameters

winX, winY, winZ

Specify the window coordinates to be mapped.

clipW

Specify the clip w coordinate to be mapped.

model

Specifies the modelview matrix (as from a glGetFloatv call, modelview matrix is queriable in OpenGL ES 1.1, not in OpenGL ES 1.0).

proj

Specifies the projection matrix (as from a glGetFloatv call, projection matrix is queriable in OpenGL ES 1.1, not in OpenGL ES 1.0).

view

Specifies the viewport (as from a glGetIntegerv call, viewport is queriable in OpenGL ES 1.1, not in OpenGL ES 1.0).

nearVal, farVal

Specifies the near and far planes (as from a glGetFloatv call).

objX, objY, objZ, objW

Returns the computed object coordinates.

Description

gluUnProject4 maps the specified window coordinatesi: winX, winY, and winZ and its clip w coordinate clipW into object coordinates (objX, objY, objZ, objW) using model, proj, and view. This also handles the case where the nearVal and farVal planes are different from the default, 0 and 1, respectively. A return value of GLU_TRUE indicates success; a return value of GLU_FALSE indicates failure.

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


      /      \                /  2 * (winX - view[0])      \
      | objX |                | ---------------------- - 1 |
      |      |                |        view[2]             |
      |      |                |                            |
      |      |                |  2 * (winY - view[1])      |
      | objY |                | ---------------------- - 1 |
      |      |                |        view[3]             |
      |      |   =   INV (PM) |                            |
      |      |                |  2 * (winZ - nearVal)      |
      | objZ |                | ---------------------- - 1 |
      |      |                |   (farVal - nearVal)       |
      |      |                |                            |
      |      |                |                            |
      | objW |                |           clipW            |
      \      /                \                            /
            

INV denotes matrix inversion.

gluUnProject4 is equivalent to gluUnProject when clipW is 1, nearVal is 0, and farVal is 1.

Notes

gluUnProject4 is available only if the GLU version is 1.3 or greater.

See Also

gluProject, gluUnProject.

Copyright

Copyright c 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.