GLUUNPROJECT4
Section: Misc. Reference Manual Pages (3G)
Index
Return to Main Contents
NAME
gluUnProject4
- map window and clip coordinates to object coordinates
C SPECIFICATION
GLint gluUnProject4(
GLdouble winX,
GLdouble winY,
GLdouble winZ,
GLdouble clipW,
const GLdouble *model,
const GLdouble *proj,
const GLint *view,
GLdouble near,
GLdouble far,
GLdouble* objX,
GLdouble* objY,
GLdouble* objZ,
GLdouble* objW )
delim $$
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 glGetDoublev call).
- proj
-
Specifies the projection matrix (as from a glGetDoublev call).
- view
-
Specifies the viewport (as from a glGetIntegerv call).
- near, far
-
Specifies the near and far planes (as from a glGetDoublev call).
- objX, objY, objZ, objW
-
Returns the computed object coordinates.
DESCRIPTION
gluUnProject4 maps the specified window coordinates winX, winY and winZ
and its clip w coordinate clipW
into object
coordinates (objX, objY, objZ, objW)
using model, proj and view. clipW can be other than
1 as for vertices in glFeedbackBuffer when data type
GL_4D_COLOR_TEXTURE is returned.
This also handles the case
where the near and far planes are different from the default,
0 and 1, respectively.
A return
value of GL_TRUE indicates success; a return value of GL_FALSE
indicates failure.
To compute the coordinates (objX, objY, objZ and objW),
gluUnProject4 multiplies the normalized device coordinates by the inverse of
model*proj as follows:
left ( down 70 {cpile { ~"objX" above ~"objY" above ~"objZ"
above ~"objW"}} ~~ right ) ~=~ INV(P M)
left ( down 140 {cpile {
{ {2("winX" ~-~ "view"[0])} over {"view"[2]} ~-~ 1 }
above
{ {2("winY" ~-~ "view"[1])} over {"view"[3]} ~-~ 1 }
above
{ {2("winZ" ~-~ "near")} over {("far" ~-~ "near")} ~-~ 1 }
above
"clipW"}} ~~ right )
$INV()$ denotes matrix inversion.
gluUnProject4 is equivalent to gluUnProject when clipW is 1, near is 0 and
far is 1.
NOTES
gluUnProject4 is available only if the GLU version is 1.3 or greater.
SEE ALSO
glGet(3G),
glFeedbackBuffer(3G),
gluProject(3G),
gluUnProject(3G)