GLEVALMESH

Section: Misc. Reference Manual Pages (3G)
索引 xjman
 

名前

glEvalMesh1, glEvalMesh2 - 点および線の1次元または2次元の格子を算出する

 

書式

void glEvalMesh1( GLenum mode,

                    GLint i1,
                    GLint i2 )

delim $$  

引き数

mode
glEvalMesh1 においては、点と線のどちらについて 1次元の格子を算出するかを指定する。 シンボル定数 GL_POINT, GL_LINE を指定できる。
i1, i2
格子領域変数 $i$ に対する最初と最後の整数値を指定する。
 

書式

void glEvalMesh2( GLenum mode,

                    GLint i1,
                    GLint i2,
                    GLint j1,
                    GLint j2 )

 

引き数

mode
glEvalMesh2 においては、点、線、ポリゴンのいずれについて 2次元の格子を計算するのかを指定する。 シンボル定数 GL_POINT, GL_LINE, GL_FILL を指定できる。
格子領域変数 $i$ に対する最初と最後の整数値を指定する。
格子領域変数 $j$ に対する最初と最後の整数値を指定する。
 

説明

glMapGrid および glEvalMesh は、 偶数個区切りのマップ領域値の一連のデータを効率的に生成・評価するために 繋げて使われる。 glEvalMesh は整数値を取る1次元または2次元の格子領域の内部を 移動する。 この格子の範囲は、glMap1 および glMap2 で指定した 評価マップの領域である。 mode は、結果として得られる頂点群が 点、線、塗りつぶされたポリゴンのいずれとして接続されるのかを指定する。 1次元の場合には glEvalMesh1 が使われ、 以下のコードが実行されたのと同じように格子が生成される。
glBegin( type ); for ( i = i1; i <= i2; i += 1 ) glEvalCoord1( i$^cdot^DELTA u ~+~ u sub 1$ ); glEnd();
ここで、

$ DELTA u ~=~ (u sub 2 ~-~ u sub 1 ) ^/^ n$

であり、$n$, $u sub 1$, $u sub 2$ は直前の glMapGrid1 コマンド に与えた引き数である。 modeGL_POINT ならば typeGL_POINTS である。 modeGL_LINE ならば typeGL_LINES である。 数値的に絶対必要な条件は、もし $i ~=~ n$ ならば $ i^cdot^DELTA u ~+~ u sub 1$ から計算される値がちょうど $u sub 2$ と なることである。 2次元の場合には glEvalMesh2 が使われる。ここで

$ DELTA u ~=~ mark ( u sub 2 ~-~ u sub 1 ) ^/^ n$ $ DELTA v ~=~ lineup ( v sub 2 ~-~ v sub 1 ) ^/^ m$,
とする。 この式では $n$, $u sub 1$, $u sub 2$, $m$, $v sub 1$, and $v sub 2$ は 直前に実行された glMapGrid2 に与えた引き数である。 すると、modeGL_FILL ならば、glEvalMesh2 は次のコードと等価である:
for ( j = j1; j < j2; j += 1 ) { glBegin( GL_QUAD_STRIP ); for ( i = i1; i <= i2; i += 1 ) { glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, (j+1)$^cdot^DELTA v ~+~ v sub 1$ ); } glEnd(); }
modeGL_LINE ならば、glEvalMesh2 の呼び出しは 次のコードと等価である:
for ( j = j1; j <= j2; j += 1 ) { glBegin( GL_LINE_STRIP ); for ( i = i1; i <= i2; i += 1 ) glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); glEnd(); } for ( i = i1; i <= i2; i += 1 ) { glBegin( GL_LINE_STRIP ); for ( j = j1; j <= j1; j += 1 ) glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1 $ ); glEnd(); }
最後に、modeGL_POINT ならば、glEvalMesh2 の 呼び出しは次のコードと等価である:
glBegin( GL_POINTS ); for ( j = j1; j <= j2; j += 1 ) for ( i = i1; i <= i2; i += 1 ) glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); glEnd();
3つの場合すべてにおいて、数値的に絶対必要な条件は、もし $i~=~n$ がならば $i^cdot^DELTA u ~+~ u sub 1$ から計算される値がちょうど $u sub 2$ となり、 $j~=~m$ ならば $j ^cdot^ DELTA v ~+~ v sub 1$ から計算される値が $v sub 2$ となることである。  

エラー

GL_INVALID_ENUM: mode に不正な値を指定すると起こる。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd の間で glEvalMesh を 実行すると起こる。  

関連する取得値

引き数 GL_MAP1_GRID_DOMAIN を指定した glGet
引き数 GL_MAP2_GRID_DOMAIN を指定した glGet
引き数 GL_MAP1_GRID_SEGMENTS を指定した glGet
引き数 GL_MAP2_GRID_SEGMENTS を指定した glGet  

関連項目

glBegin(3G), glEvalCoord(3G), glEvalPoint(3G), glMap1(3G), glMap2(3G), glMapGrid(3G)


 

Index

名前
書式
引き数
書式
引き数
説明
エラー
関連する取得値
関連項目

jman



Time: 07:01:06 GMT, January 12, 2009