1 <?xml version=
"1.0" encoding=
"UTF-8"?>
2 <!DOCTYPE book PUBLIC
"-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
3 "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
4 <refentry id=
"gluUnProject">
9 <holder>Silicon Graphics, Inc.
</holder>
12 <refentrytitle>gluUnProject
</refentrytitle>
13 <manvolnum>3G
</manvolnum>
16 <refname>gluUnProject
</refname>
17 <refpurpose>map window coordinates to object coordinates
</refpurpose>
19 <refsynopsisdiv><title>C Specification
</title>
22 <funcdef>GLint
<function>gluUnProject
</function></funcdef>
23 <paramdef>GLdouble
<parameter>winX
</parameter></paramdef>
24 <paramdef>GLdouble
<parameter>winY
</parameter></paramdef>
25 <paramdef>GLdouble
<parameter>winZ
</parameter></paramdef>
26 <paramdef>const GLdouble *
<parameter>model
</parameter></paramdef>
27 <paramdef>const GLdouble *
<parameter>proj
</parameter></paramdef>
28 <paramdef>const GLint *
<parameter>view
</parameter></paramdef>
29 <paramdef>GLdouble*
<parameter>objX
</parameter></paramdef>
30 <paramdef>GLdouble*
<parameter>objY
</parameter></paramdef>
31 <paramdef>GLdouble*
<parameter>objZ
</parameter></paramdef>
35 <!-- eqn: ignoring delim $$ -->
36 <refsect1 id=
"parameters"><title>Parameters
</title>
39 <term><parameter>winX
</parameter></term>
40 <term><parameter>winY
</parameter></term>
41 <term><parameter>winZ
</parameter></term>
44 Specify the window coordinates to be mapped.
49 <term><parameter>model
</parameter></term>
52 Specifies the modelview matrix (as from a
<citerefentry><refentrytitle>glGetDoublev
</refentrytitle></citerefentry> call).
57 <term><parameter>proj
</parameter></term>
60 Specifies the projection matrix (as from a
<citerefentry><refentrytitle>glGetDoublev
</refentrytitle></citerefentry> call).
65 <term><parameter>view
</parameter></term>
68 Specifies the viewport (as from a
<citerefentry><refentrytitle>glGetIntegerv
</refentrytitle></citerefentry> call).
73 <term><parameter>objX
</parameter></term>
74 <term><parameter>objY
</parameter></term>
75 <term><parameter>objZ
</parameter></term>
78 Returns the computed object coordinates.
84 <refsect1 id=
"description"><title>Description
</title>
86 <function>gluUnProject
</function> maps the specified window coordinates into object
87 coordinates using
<parameter>model
</parameter>,
<parameter>proj
</parameter>, and
<parameter>view
</parameter>.
88 The result is stored in
<parameter>objX
</parameter>,
<parameter>objY
</parameter>, and
<parameter>objZ
</parameter>. A return value of
89 <constant>GLU_TRUE
</constant> indicates success; a return value of
<constant>GLU_FALSE
</constant>
93 To compute the coordinates
94 <inlineequation><mml:math>
95 <!-- eqn: (objX, objY, objZ):-->
96 <mml:mfenced open=
"(" close=
")">
97 <mml:mi mathvariant=
"italic">objX
</mml:mi>
98 <mml:mi mathvariant=
"italic">objY
</mml:mi>
99 <mml:mi mathvariant=
"italic">objZ
</mml:mi>
101 </mml:math></inlineequation>,
102 <function>gluUnProject
</function> multiplies the normalized device coordinates by the inverse of
103 <parameter>model
</parameter> *
<parameter>proj
</parameter> as follows:
106 <informalequation><mml:math>
107 <!-- eqn: left ( cpile { objX above objY above objZ above W} right ) = INV(P M) left ( cpile { {2(winX - view[0])} over {view [2]} - 1 above {2(winY - view[1])} over {view[3]} - 1 above 2(winZ) - 1 above 1 } right ):-->
109 <mml:mfenced open=
"(" close=
")">
112 <mml:mi mathvariant=
"italic">objX
</mml:mi>
115 <mml:mi mathvariant=
"italic">objY
</mml:mi>
118 <mml:mi mathvariant=
"italic">objZ
</mml:mi>
121 <mml:mi mathvariant=
"italic">W
</mml:mi>
128 <mml:mi mathvariant=
"italic">INV
</mml:mi>
129 <mml:mo>⁡</mml:mo>
130 <mml:mfenced open=
"(" close=
")">
132 <mml:mi mathvariant=
"italic">P
</mml:mi>
133 <mml:mo>⁢</mml:mo>
134 <mml:mi mathvariant=
"italic">M
</mml:mi>
138 <mml:mo>⁢</mml:mo>
139 <mml:mfenced open=
"(" close=
")">
144 <mml:mfenced open=
"" close=
"">
147 <mml:mo>⁡</mml:mo>
148 <mml:mfenced open=
"(" close=
")">
150 <mml:mi mathvariant=
"italic">winX
</mml:mi>
153 <mml:mi mathvariant=
"italic">view
</mml:mi>
154 <mml:mo>⁡</mml:mo>
155 <mml:mfenced open=
"[" close=
"]">
163 <mml:mfenced open=
"" close=
"">
165 <mml:mi mathvariant=
"italic">view
</mml:mi>
166 <mml:mo>⁡</mml:mo>
167 <mml:mfenced open=
"[" close=
"]">
180 <mml:mfenced open=
"" close=
"">
183 <mml:mo>⁡</mml:mo>
184 <mml:mfenced open=
"(" close=
")">
186 <mml:mi mathvariant=
"italic">winY
</mml:mi>
189 <mml:mi mathvariant=
"italic">view
</mml:mi>
190 <mml:mo>⁡</mml:mo>
191 <mml:mfenced open=
"[" close=
"]">
199 <mml:mfenced open=
"" close=
"">
201 <mml:mi mathvariant=
"italic">view
</mml:mi>
202 <mml:mo>⁡</mml:mo>
203 <mml:mfenced open=
"[" close=
"]">
217 <mml:mo>⁡</mml:mo>
218 <mml:mfenced open=
"(" close=
")">
219 <mml:mi mathvariant=
"italic">winZ
</mml:mi>
233 </mml:math></informalequation>
234 <inlineequation><mml:math><mml:mi mathvariant=
"italic">INV
</mml:mi></mml:math></inlineequation>
235 denotes matrix inversion.
236 W is an unused variable, included for consistent matrix notation.
239 <refsect1 id=
"seealso"><title>See Also
</title>
241 <citerefentry><refentrytitle>gluProject
</refentrytitle></citerefentry>,
242 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry>
245 <refsect1 id=
"Copyright"><title>Copyright
</title>
247 Copyright
<trademark class=
"copyright"></trademark> 1991-
2006
248 Silicon Graphics, Inc. This document is licensed under the SGI
249 Free Software B License. For details, see
250 <ulink url=
"http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/
</ulink>.