書式
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
- 曲線の型を指定する。 この曲線が gluBeginCurve と gluEndCurve の対で括られて いる場合は、曲線の型は次数が 1 の評価処理のいずれでもよい (GL_MAP1_VERTEX_3, GL_MAP1_COLOR_4 など)。 gluBeginTrim と gluEndTrim の対で括られている場合は、 許される型は GLU_MAP1_TRIM_2 と GLU_MAP1_TRIM_3 の どちらかだけである。
説明
gluNurbsCurve は NURBS 曲線を記述するために使う。gluNurbsCurve が gluBeginCurve/gluEndCurve の 対の間に現れたとき、この関数はレンダリングする曲線を記述するために 使われる。 位置座標系・テクスチャ座標系・色座標系は、 一組の gluBeginCurve/gluEndCurve の間で 別々に gluNurbsCurve を記述することで対応を取る。 一組の gluBeginCurve/gluEndCurve の間で 色、位置、テクスチャのいずれかだけについて gluNurbsCurve を呼び出すこともできる。 曲線の位置を記述するための呼び出しはひとつだけ行わなければならない。
gluNurbsCurve が gluBeginTrim と gluEndTrim の 対の間に現れる場合、この呼び出しは NURBS 曲面上のトリミング曲線を記述 するために使われる。 type が GLU_MAP1_TRIM_2 ならば、この呼び出しは 2 次のパラメータ空間(u と v)上の曲線を記述する。 type が GLU_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);