Tao.OpenGl SDK Documentation

Glu.gluProject Method 

Maps object coordinates to window coordinates.

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

Parameters

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

Return Value

Returns GL_TRUE indicates success, a return value of GL_FALSE indicates failure.

Remarks

gluProject transforms the specified object coordinates into window coordinates using modelMatrix, projectionMatrix, and viewport. The result is stored in winX, winY, and winZ. A return value of GL_TRUE indicates success, a return value of GL_FALSE indicates failure.

To compute the coordinates, let v = (objX, objY, objZ, 1.0) represented as a matrix with 4 rows and 1 column. Then gluProject computes v' as follows:

v' = P x M x v

Where P is the current projection matrix projectionMatrix, M is the current modelview matrix modelMatrix (both represented as 4x4 matrices in column-major order) and 'x' represents matrix multiplication.

The window coordinates are then computed as follows:

            winX = view(0) + view(2) * (v'(0) + 1) / 2
            winY = view(1) + view(3) * (v'(1) + 1) / 2
            winZ = (v'(2) + 1) / 2
            

See Also

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