Tao.OpenGl SDK Documentation

Glu.gluUnProject Method 

Maps window coordinates to object coordinates.

[Visual Basic]
Public Shared Function gluUnProject( _
   ByVal winX As Double, _
   ByVal winY As Double, _
   ByVal winZ As Double, _
   ByVal modelMatrix As Double(), _
   ByVal projectionMatrix As Double(), _
   ByVal viewport As Integer(), _
   ByRef objX As Double, _
   ByRef objY As Double, _
   ByRef objZ As Double _
) As Integer
[C#]
public static int gluUnProject(
   double winX,
   double winY,
   double winZ,
   double[] modelMatrix,
   double[] projectionMatrix,
   int[] viewport,
   out double objX,
   out double objY,
   out double objZ
);

Parameters

winX
The window's x axis coordinate to be mapped.
winY
The window's y axis coordinate to be mapped.
winZ
The window's z axis coordinate to be mapped.
modelMatrix
The modelview matrix (as from a glGetDoublev call).
projectionMatrix
The projection matrix (as from a glGetDoublev call).
viewport
The viewport (as from a glGetIntegerv call).
objX
The computed object's x axis coordinate.
objY
The computed object's y axis coordinate.
objZ
The computed object's z axis coordinate.

Return Value

A return value of GL_TRUE indicates success; a return value of GL_FALSE indicates failure.

Remarks

gluUnProject maps the specified window coordinates into object coordinates using modelMatrix, projectionMatrix, and viewport. 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 modelMatrix multiplied by projectionMatrix as follows:

            (  2(winX - viewport[0])  )
            |  ----------------- - 1  |
            |       viewport[2]       |
            (      )          |                         |
            | objX |          |  2(winY - viewport[1])  |
            | objY | = INV(PM)|  ----------------- - 1  |
            | objZ |          |       viewport[3]       |
            (  W   )          |                         |
            |       2(winZ) - 1       |
            |                         |
            (            1            )
            

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

See Also

Glu Class | Tao.OpenGl Namespace | glGetDoublev | glGetIntegerv | gluProject