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=
"glEvalMesh">
9 <holder>Silicon Graphics, Inc.
</holder>
12 <refentrytitle>glEvalMesh
</refentrytitle>
13 <manvolnum>3G
</manvolnum>
16 <refname>glEvalMesh
</refname>
17 <refpurpose>compute a one- or two-dimensional grid of points or lines
</refpurpose>
19 <refsynopsisdiv><title>C Specification
</title>
22 <funcdef>void
<function>glEvalMesh1
</function></funcdef>
23 <paramdef>GLenum
<parameter>mode
</parameter></paramdef>
24 <paramdef>GLint
<parameter>i1
</parameter></paramdef>
25 <paramdef>GLint
<parameter>i2
</parameter></paramdef>
29 <!-- eqn: ignoring delim $$ -->
30 <refsect1 id=
"parameters"><title>Parameters
</title>
33 <term><parameter>mode
</parameter></term>
36 In
<function>glEvalMesh1
</function>, specifies whether to compute a one-dimensional mesh of points or lines.
38 <constant>GL_POINT
</constant> and
39 <constant>GL_LINE
</constant> are accepted.
44 <term><parameter>i1
</parameter></term>
45 <term><parameter>i2
</parameter></term>
48 Specify the first and last integer values for grid domain variable
49 <inlineequation><mml:math><mml:mi mathvariant=
"italic">i
</mml:mi></mml:math></inlineequation>.
55 <refsynopsisdiv><title>C Specification
</title>
58 <funcdef>void
<function>glEvalMesh2
</function></funcdef>
59 <paramdef>GLenum
<parameter>mode
</parameter></paramdef>
60 <paramdef>GLint
<parameter>i1
</parameter></paramdef>
61 <paramdef>GLint
<parameter>i2
</parameter></paramdef>
62 <paramdef>GLint
<parameter>j1
</parameter></paramdef>
63 <paramdef>GLint
<parameter>j2
</parameter></paramdef>
67 <refsect1 id=
"parameters2"><title>Parameters
</title>
70 <term><parameter>mode
</parameter></term>
73 In
<function>glEvalMesh2
</function>, specifies whether to compute a two-dimensional mesh of points, lines,
76 <constant>GL_POINT
</constant>,
77 <constant>GL_LINE
</constant>, and
78 <constant>GL_FILL
</constant> are accepted.
83 <term><parameter>i1
</parameter></term>
84 <term><parameter>i2
</parameter></term>
87 Specify the first and last integer values for grid domain variable
88 <inlineequation><mml:math><mml:mi mathvariant=
"italic">i
</mml:mi></mml:math></inlineequation>.
93 <term><parameter>j1
</parameter></term>
94 <term><parameter>j2
</parameter></term>
97 Specify the first and last integer values for grid domain variable
98 <inlineequation><mml:math><mml:mi mathvariant=
"italic">j
</mml:mi></mml:math></inlineequation>.
104 <refsect1 id=
"description"><title>Description
</title>
106 <citerefentry><refentrytitle>glMapGrid
</refentrytitle></citerefentry> and
<function>glEvalMesh
</function> are used in tandem to efficiently
107 generate and evaluate a series of evenly-spaced map domain values.
108 <function>glEvalMesh
</function> steps through the integer domain of a one- or two-dimensional grid,
109 whose range is the domain of the evaluation maps specified by
110 <citerefentry><refentrytitle>glMap1
</refentrytitle></citerefentry> and
<citerefentry><refentrytitle>glMap2
</refentrytitle></citerefentry>.
111 <parameter>mode
</parameter> determines whether the resulting vertices are connected as
117 In the one-dimensional case,
118 <function>glEvalMesh1
</function>,
119 the mesh is generated as if the following code fragment were executed:
123 glBegin(
<parameter>type
</parameter> );
124 for ( i =
<parameter>i1
</parameter>; i
<=
<parameter>i2
</parameter>; i +=
1 )
125 glEvalCoord1(
<mml:math>
126 <!-- eqn: i \cdot DELTA u + u sub 1 :-->
130 <mml:mo>·</mml:mo>
131 <mml:mo>Δ</mml:mo>
132 <mml:mi mathvariant=
"italic">u
</mml:mi>
136 <mml:mi mathvariant=
"italic">u
</mml:mi>
146 <informalequation><mml:math>
147 <!-- eqn: DELTA u = (u sub 2 - u sub 1 ) / n:-->
150 <mml:mo>Δ</mml:mo>
151 <mml:mi mathvariant=
"italic">u
</mml:mi>
155 <mml:mfenced open=
"(" close=
")">
158 <mml:mi mathvariant=
"italic">u
</mml:mi>
163 <mml:mi mathvariant=
"italic">u
</mml:mi>
168 <mml:mi mathvariant=
"italic">n
</mml:mi>
171 </mml:math></informalequation>
175 <inlineequation><mml:math><mml:mi mathvariant=
"italic">n
</mml:mi></mml:math></inlineequation>,
176 <inlineequation><mml:math>
177 <!-- eqn: u sub 1:-->
178 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
181 </mml:math></inlineequation>,
183 <inlineequation><mml:math>
184 <!-- eqn: u sub 2:-->
185 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
188 </mml:math></inlineequation>
189 are the arguments to the most recent
190 <citerefentry><refentrytitle>glMapGrid1
</refentrytitle></citerefentry> command.
191 <emphasis>type
</emphasis> is
<constant>GL_POINTS
</constant> if
<parameter>mode
</parameter> is
<constant>GL_POINT
</constant>,
192 or
<constant>GL_LINES
</constant> if
<parameter>mode
</parameter> is
<constant>GL_LINE
</constant>.
195 The one absolute numeric requirement is that if
196 <inlineequation><mml:math>
199 <mml:mi mathvariant=
"italic">i
</mml:mi>
201 <mml:mi mathvariant=
"italic">n
</mml:mi>
203 </mml:math></inlineequation>,
206 <inlineequation><mml:math>
207 <!-- eqn: i cdot DELTA u + u sub 1:-->
210 <mml:mi mathvariant=
"italic">i
</mml:mi>
211 <mml:mo>·</mml:mo>
213 <mml:mo>Δ</mml:mo>
214 <mml:mi mathvariant=
"italic">u
</mml:mi>
218 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
222 </mml:math></inlineequation>
224 <inlineequation><mml:math>
225 <!-- eqn: u sub 2:-->
226 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
229 </mml:math></inlineequation>.
232 In the two-dimensional case,
<function>glEvalMesh2
</function>, let
234 <informalequation><mml:math>
235 <!-- eqn: DELTA u = ( u sub 2 - u sub 1 ) / n:-->
238 <mml:mo>Δ</mml:mo>
239 <mml:mi mathvariant=
"italic">u
</mml:mi>
243 <mml:mfenced open=
"(" close=
")">
245 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
249 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
254 <mml:mi mathvariant=
"italic">n
</mml:mi>
257 </mml:math></informalequation>
260 <informalequation><mml:math>
261 <!-- eqn: DELTA v = ( v sub 2 - v sub 1 ) / m:-->
264 <mml:mo>Δ</mml:mo>
265 <mml:mi mathvariant=
"italic">v
</mml:mi>
269 <mml:mfenced open=
"(" close=
")">
271 <mml:msub><mml:mi mathvariant=
"italic">v
</mml:mi>
275 <mml:msub><mml:mi mathvariant=
"italic">v
</mml:mi>
280 <mml:mi mathvariant=
"italic">m
</mml:mi>
283 </mml:math></informalequation>
287 <inlineequation><mml:math><mml:mi mathvariant=
"italic">n
</mml:mi></mml:math></inlineequation>,
288 <inlineequation><mml:math>
289 <!-- eqn: u sub 1:-->
290 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
293 </mml:math></inlineequation>,
294 <inlineequation><mml:math>
295 <!-- eqn: u sub 2:-->
296 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
299 </mml:math></inlineequation>,
300 <inlineequation><mml:math><mml:mi mathvariant=
"italic">m
</mml:mi></mml:math></inlineequation>,
301 <inlineequation><mml:math>
302 <!-- eqn: v sub 1:-->
303 <mml:msub><mml:mi mathvariant=
"italic">v
</mml:mi>
306 </mml:math></inlineequation>,
308 <inlineequation><mml:math>
309 <!-- eqn: v sub 2:-->
310 <mml:msub><mml:mi mathvariant=
"italic">v
</mml:mi>
313 </mml:math></inlineequation>
315 arguments to the most recent
<citerefentry><refentrytitle>glMapGrid2
</refentrytitle></citerefentry> command. Then, if
316 <parameter>mode
</parameter> is
<constant>GL_FILL
</constant>, the
<function>glEvalMesh2
</function> command is equivalent
321 for ( j =
<parameter>j1
</parameter>; j
< <parameter>j2
</parameter>; j +=
1 ) {
322 glBegin( GL_QUAD_STRIP );
323 for ( i =
<parameter>i1
</parameter>; i
<=
<parameter>i2
</parameter>; i +=
1 ) {
324 glEvalCoord2(
<mml:math>
325 <!-- i \cdot DELTA u + u sub 1 :-->
329 <mml:mo>·</mml:mo>
330 <mml:mo>Δ</mml:mo>
331 <mml:mi mathvariant=
"italic">u
</mml:mi>
335 <mml:mi mathvariant=
"italic">u
</mml:mi>
339 <!-- j \cdot DELTA v + v sub 1 :-->
342 <mml:mo>·</mml:mo>
343 <mml:mo>Δ</mml:mo>
344 <mml:mi mathvariant=
"italic">v
</mml:mi>
349 <mml:mi mathvariant=
"italic">v
</mml:mi>
354 glEvalCoord2(
<mml:math>
355 <!-- i \cdot DELTA u + u sub 1, :-->
359 <mml:mo>·</mml:mo>
360 <mml:mo>Δ</mml:mo>
361 <mml:mi mathvariant=
"italic">u
</mml:mi>
365 <mml:mi mathvariant=
"italic">u
</mml:mi>
369 <!-- (j + 1) \cdot DELTA v + v sub 1 :-->
372 <mml:mfenced open=
"(" close=
")">
380 <mml:mo>·</mml:mo>
381 <mml:mo>Δ</mml:mo>
382 <mml:mi mathvariant=
"italic">v
</mml:mi>
386 <mml:mi mathvariant=
"italic">v
</mml:mi>
397 If
<parameter>mode
</parameter> is
<constant>GL_LINE
</constant>, then a call to
<function>glEvalMesh2
</function> is equivalent to:
401 for ( j =
<parameter>j1
</parameter>; j
<=
<parameter>j2
</parameter>; j +=
1 ) {
402 glBegin( GL_LINE_STRIP );
403 for ( i =
<parameter>i1
</parameter>; i
<=
<parameter>i2
</parameter>; i +=
1 )
404 glEvalCoord2(
<mml:math>
405 <!-- i \cdot DELTA u + u sub 1 :-->
409 <mml:mo>·</mml:mo>
410 <mml:mo>Δ</mml:mo>
411 <mml:mi mathvariant=
"italic">u
</mml:mi>
415 <mml:mi mathvariant=
"italic">u
</mml:mi>
419 <!-- i \cdot DELTA v + v sub 1 :-->
422 <mml:mo>·</mml:mo>
423 <mml:mo>Δ</mml:mo>
424 <mml:mi mathvariant=
"italic">v
</mml:mi>
428 <mml:mi mathvariant=
"italic">v
</mml:mi>
436 for ( i =
<parameter>i1
</parameter>; i
<=
<parameter>i2
</parameter>; i +=
1 ) {
437 glBegin( GL_LINE_STRIP );
438 for ( j =
<parameter>j1
</parameter>; j
<=
<parameter>j1
</parameter>; j +=
1 )
439 glEvalCoord2(
<mml:math>
440 <!-- i \cdot DELTA u + u sub 1 :-->
444 <mml:mo>·</mml:mo>
445 <mml:mo>Δ</mml:mo>
446 <mml:mi mathvariant=
"italic">u
</mml:mi>
450 <mml:mi mathvariant=
"italic">u
</mml:mi>
454 <!-- i \cdot DELTA v + v sub 1 :-->
457 <mml:mo>·</mml:mo>
458 <mml:mo>Δ</mml:mo>
459 <mml:mi mathvariant=
"italic">v
</mml:mi>
463 <mml:mi mathvariant=
"italic">v
</mml:mi>
473 And finally, if
<parameter>mode
</parameter> is
<constant>GL_POINT
</constant>, then a call to
474 <function>glEvalMesh2
</function> is equivalent to:
478 glBegin( GL_POINTS );
479 for ( j =
<parameter>j1
</parameter>; j
<=
<parameter>j2
</parameter>; j +=
1 )
480 for ( i =
<parameter>i1
</parameter>; i
<=
<parameter>i2
</parameter>; i +=
1 )
481 glEvalCoord2(
<mml:math>
482 <!-- i \cdot DELTA u + u sub 1 :-->
486 <mml:mo>·</mml:mo>
487 <mml:mo>Δ</mml:mo>
488 <mml:mi mathvariant=
"italic">u
</mml:mi>
492 <mml:mi mathvariant=
"italic">u
</mml:mi>
496 <!-- i \cdot DELTA v + v sub 1 :-->
499 <mml:mo>·</mml:mo>
500 <mml:mo>Δ</mml:mo>
501 <mml:mi mathvariant=
"italic">v
</mml:mi>
505 <mml:mi mathvariant=
"italic">v
</mml:mi>
514 In all three cases, the only absolute numeric requirements are that if
515 <inlineequation><mml:math>
518 <mml:mi mathvariant=
"italic">i
</mml:mi>
520 <mml:mi mathvariant=
"italic">n
</mml:mi>
522 </mml:math></inlineequation>,
523 then the value computed from
524 <inlineequation><mml:math>
525 <!-- eqn: i cdot DELTA u + u sub 1:-->
528 <mml:mi mathvariant=
"italic">i
</mml:mi>
529 <mml:mo>·</mml:mo>
531 <mml:mo>Δ</mml:mo>
532 <mml:mi mathvariant=
"italic">u
</mml:mi>
536 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
540 </mml:math></inlineequation>
542 <inlineequation><mml:math>
543 <!-- eqn: u sub 2:-->
544 <mml:msub><mml:mi mathvariant=
"italic">u
</mml:mi>
547 </mml:math></inlineequation>,
549 <inlineequation><mml:math>
552 <mml:mi mathvariant=
"italic">j
</mml:mi>
554 <mml:mi mathvariant=
"italic">m
</mml:mi>
556 </mml:math></inlineequation>,
557 then the value computed from
558 <inlineequation><mml:math>
559 <!-- eqn: j cdot DELTA v + v sub 1:-->
562 <mml:mi mathvariant=
"italic">j
</mml:mi>
563 <mml:mo>·</mml:mo>
565 <mml:mo>Δ</mml:mo>
566 <mml:mi mathvariant=
"italic">v
</mml:mi>
570 <mml:msub><mml:mi mathvariant=
"italic">v
</mml:mi>
574 </mml:math></inlineequation>
576 <inlineequation><mml:math>
577 <!-- eqn: v sub 2:-->
578 <mml:msub><mml:mi mathvariant=
"italic">v
</mml:mi>
581 </mml:math></inlineequation>.
584 <refsect1 id=
"errors"><title>Errors
</title>
586 <constant>GL_INVALID_ENUM
</constant> is generated if
<parameter>mode
</parameter> is not an accepted value.
589 <constant>GL_INVALID_OPERATION
</constant> is generated if
<function>glEvalMesh
</function>
590 is executed between the execution of
<citerefentry><refentrytitle>glBegin
</refentrytitle></citerefentry>
591 and the corresponding execution of
<citerefentry><refentrytitle>glEnd
</refentrytitle></citerefentry>.
594 <refsect1 id=
"associatedgets"><title>Associated Gets
</title>
596 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_MAP1_GRID_DOMAIN
</constant>
599 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_MAP2_GRID_DOMAIN
</constant>
602 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_MAP1_GRID_SEGMENTS
</constant>
605 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_MAP2_GRID_SEGMENTS
</constant>
608 <refsect1 id=
"seealso"><title>See Also
</title>
610 <citerefentry><refentrytitle>glBegin
</refentrytitle></citerefentry>,
611 <citerefentry><refentrytitle>glEvalCoord
</refentrytitle></citerefentry>,
612 <citerefentry><refentrytitle>glEvalPoint
</refentrytitle></citerefentry>,
613 <citerefentry><refentrytitle>glMap1
</refentrytitle></citerefentry>,
614 <citerefentry><refentrytitle>glMap2
</refentrytitle></citerefentry>,
615 <citerefentry><refentrytitle>glMapGrid
</refentrytitle></citerefentry>
618 <refsect1 id=
"Copyright"><title>Copyright
</title>
620 Copyright
<trademark class=
"copyright"></trademark> 1991-
2006
621 Silicon Graphics, Inc. This document is licensed under the SGI
622 Free Software B License. For details, see
623 <ulink url=
"http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/
</ulink>.