Maps window coordinates to object coordinates.
OpenGL C bindings library: libGL.a
int gluUnProject( GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ)
The gluUnProject subroutine maps the specified window coordinates into object space coordinates using the model, proj, and view parameter values provided. Results are stored in objX, objY, and objZ. A return value of GL_TRUE indicates success, and 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:
                  (  2(winX - view[0])      )
                  |  ----------------- - 1  |
                  |       view[2]           |
(      )          |                         |
| objX |          |  2(winY - view[1])      |
| objY | = INV(PM)|  ----------------- - 1  |
| objZ |          |       view[3]           |
(  W   )          |                         |
                  |       2(winZ) - 1       |
                  |                         |
                  (            1            )
INV( ) denotes matrix inversion. W is an unused variable, included for consistent matrix notation.
| GL_TRUE | Indicates the projection succeeded. | 
| GL_FALSE | Indicates the projection failed. | 
| /usr/include/GL/gl.h | Contains C language constraints, variable type definitions, and ANSI function prototypes for OpenGL. | 
The glGet subroutine, gluProject subroutine.