# Glu.Project (gb.opengl.glu)

Static Function Project ( ObjectX As Float, ObjectY As Float, ObjectZ As Float, Modelview As Float[], Projection As Float[], Viewport As Integer[] ) As Float[]

Map object coordinates to window coordinates.

### Parameters

objX, objY, objZ

Specify the object coordinates.
model

Specifies the current modelview matrix (as from a Gl.GetDoublev call).
proj

Specifies the current projection matrix (as from a Gl.GetDoublev call).
view

Specifies the current viewport (as from a Gl.GetIntegerv call).
winX, winY, winZ

Return the computed window coordinates.

### Description

Glu.Project transforms the specified object coordinates into window coordinates using model, proj, and view. The result is stored in winX, winY, and winZ. A return value of Glu.TRUE indicates success, a return value of Glu.FALSE indicates failure.

To compute the coordinates, let $\mathit{v}\left(\mathit{objX},\mathit{objY},\mathit{objZ},1.0\right)$ represented as a matrix with 4 rows and 1 column. Then Glu.Project computes ${\mathit{v}}^{″}$ as follows:

${\mathit{v}}^{″}\mathit{P}×\mathit{M}×\mathit{v}$

where $\mathit{P}$ is the current projection matrix proj and $\mathit{M}$ is the current modelview matrix model (both represented as $4×4$ matrices in column-major order).

The window coordinates are then computed as follows:

$\mathit{winX}\mathit{view}\left(0\right)+\frac{\mathit{view}\left(2\right)×\left({\mathit{v}}^{″}\left(0\right)+1\right)}{2}$

$\mathit{winY}\mathit{view}\left(1\right)+\frac{\mathit{view}\left(3\right)×\left({\mathit{v}}^{″}\left(1\right)+1\right)}{2}$

$\mathit{winZ}\frac{\left({\mathit{v}}^{″}\left(2\right)+1\right)}{2}$