---
name: "gluProject"
section: "3x"
platform: "linux"
package: "xlibmesa-glu-dev"
version: "4.3.0.dfsg.1-14sarge7"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/gluProject"
---

# gluProject(3x)

map object coordinates to window coordinates

## NAME

**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 )
```

delim $$

## 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 ~=~ ("objX", "objY", "objZ", 1.0)$ represented as a matrix with 4 rows and 1 column. Then **gluProject** computes $v sup prime$ as follows:

v sup prime ~=~ P ~times~ M ~times~ v

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

The window coordinates are then computed as follows:

"winX" ~=~ "view" (0) ~+~ "view" (2) ~\*~ (v sup prime (0) ~+~ 1)~/~2

"winY" ~=~ "view" (1) ~+~ "view" (3)~\*~(v sup prime (1) ~+~ 1)~/~2 .EN

"winZ" ~=~ (v sup prime (2)  ~+~ 1)~/~ 2

## SEE ALSO

**glGet(3G)**, **gluUnProject(3G)**
