gluNurbsCurve(3) NURBS 曲線の形状を定義する

書式

void gluNurbsCurve( GLUnurbs* nurb,


GLint knotCount,
GLfloat *knots,
GLint stride,
GLfloat *control,
GLint order,
GLenum type )

delim $$

引き数

nurb
NURBS オブジェクト(gluNewNurbsRenderer を使って作る)を指定する。
knotCount
knots に含まれるノット数を指定する。 knotCount は制御点の数に次数を加えた数に等しい。
knots
ノット値が単調増加となるように並べた knotCount の配列を指定する。
stride
連続する曲線の制御点どうしのオフセットを指定する( 単精度の浮動小数点値として指定する)。
control
制御点の配列を指すポインタを指定する。 座標系は後述の type を満たさなければならない。
order
NURBS 曲線の階数を指定する。 order は度数 + 1 に等しいので、三次曲線の階数は 4 である。
type
曲線の型を指定する。 この曲線が gluBeginCurvegluEndCurve の対で括られて いる場合は、曲線の型は次数が 1 の評価処理のいずれでもよい (GL_MAP1_VERTEX_3, GL_MAP1_COLOR_4 など)。 gluBeginTrimgluEndTrim の対で括られている場合は、 許される型は GLU_MAP1_TRIM_2GLU_MAP1_TRIM_3 の どちらかだけである。

説明

gluNurbsCurve は NURBS 曲線を記述するために使う。

gluNurbsCurvegluBeginCurve/gluEndCurve の 対の間に現れたとき、この関数はレンダリングする曲線を記述するために 使われる。 位置座標系・テクスチャ座標系・色座標系は、 一組の gluBeginCurve/gluEndCurve の間で 別々に gluNurbsCurve を記述することで対応を取る。 一組の gluBeginCurve/gluEndCurve の間で 色、位置、テクスチャのいずれかだけについて gluNurbsCurve を呼び出すこともできる。 曲線の位置を記述するための呼び出しはひとつだけ行わなければならない。

gluNurbsCurvegluBeginTrimgluEndTrim の 対の間に現れる場合、この呼び出しは NURBS 曲面上のトリミング曲線を記述 するために使われる。 typeGLU_MAP1_TRIM_2 ならば、この呼び出しは 2 次のパラメータ空間(uv)上の曲線を記述する。 typeGLU_MAP1_TRIM_3 ならば、この呼び出しは 2 次の同次パラメータ空間(u, v, w)上の曲線を記述する。 トリミング曲線の詳しい説明については gluBeginTrim の項目を参照 すること。

使用例

次のコマンドはテクスチャ処理され、法線を持つ NURBS 曲線を レンダリングする。

gluBeginCurve(nobj);
   gluNurbsCurve(nobj, ..., GL_MAP1_TEXTURE_COORD_2);
   gluNurbsCurve(nobj, ..., GL_MAP1_NORMAL);
   gluNurbsCurve(nobj, ..., GL_MAP1_VERTEX_4); gluEndCurve(nobj);

注意

うまく繋がっているトリム曲線を定義するには gluPwlCurve を使う こと。