# gluProject.3G man page

gluProject — map object coordinates to window coordinates

## C Specification

GLint gluProject( GLdouble objX,

```	GLdouble objY,
GLdouble objZ,
const GLdouble *model,
const GLdouble *proj,
const GLint *view,
GLdouble* winX,
GLdouble* winY,
GLdouble* winZ )```

## Parameters

objX, objY, objZ

Specify the object coordinates.

model

Specifies the current modelview matrix (as from a glGetDoublev call).

proj

Specifies the current projection matrix (as from a glGetDoublev call).

view

Specifies the current viewport (as from a glGetIntegerv call).

winX, winY, winZ

Return the computed window coordinates.

## Description

gluProject 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  GL_TRUE indicates success, a return value of GL_FALSE indicates failure.

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

${v}^{\prime }\text{ }=\text{ }P\text{ }×\text{ }M\text{ }×\text{ }v$

where $P$ is the current projection matrix proj, $M$ is the current modelview matrix model (both represented as $4×4$ matrices in column-major order) and '$×$' represents matrix multiplication.

The window coordinates are then computed as follows:

$\text{winX}\text{ }=\text{ }\text{view}\left(0\right)\text{ }+\text{ }\text{view}\left(2\right)\text{ }*\text{ }\left({v}^{\prime }\left(0\right)\text{ }+\text{ }1\right)\text{ }/\text{ }2$

$\text{winY}\text{ }=\text{ }\text{view}\left(1\right)\text{ }+\text{ }\text{view}\left(3\right)\text{ }*\text{ }\left({v}^{\prime }\left(1\right)\text{ }+\text{ }1\right)\text{ }/\text{ }2$

$\text{winZ}\text{ }=\text{ }\left({v}^{\prime }\left(2\right)\text{ }+\text{ }1\right)\text{ }/\text{ }2$