ベジェ曲線・曲面2010年1月4日 | |
![]() ![]() ファイル09-bezier.tar.gz (曲線) 09-bezier2.tar.gz (曲面) 内容ベジェ曲線・曲面を描画します。ベジェ曲線を描画する場合、以下のような準備が必要です。 glMap1f(GL_MAP1_VERTEX_3, 0., 1., stride, n, &ctrlPoint[0][0]); glEnable(GL_MAP1_VERTEX_3); glMapGrid1f(100, 0., 1.); glMap1f の 1 は 1 次元を表わします。第 1 引数の GL_MAP1_VERTEX_3 は 3 次元の点を生成するための指定です。第 2, 3 引数の 0., 1. は始点と終点で、通常はこの通り指定します。第 4 引数 stride は配列の行を移動するときの移動量、ここでは配列 ctrlPoint が 4x3 の配列なので、stride = 3 となります。第 5 引数 n はベジェ曲線の制御点の数が入ります。第 6 引数 ctrlPoint はベジェ曲線の制御点の情報が入った配列です。
static const int n = 4;
static const int stride = 3;
static const GLfloat ctrlPoint[4][3] = {
{-0.5, 0., 0.},
{-0.25, 0.5, 0.},
{0.25, -0.5, 0.},
{0.5, 0., 0.},
};
glEnable() では、GL_MAP1_VERTEX_3 を有効にしています。glMapGrid1f() はベジェ曲線のグリッドを設定しています。第 1 引数は分割数、第 2, 3 引数は始点と終点です。 glEvalMesh1() でベジェ曲線を描画します。 glEvalMesh1(GL_LINE, 0, 100); 第 1 引数 GL_LINE は描画タイプで、他に GL_POINT も指定できます。第 2, 3 引数は、描画始点と終点のグリッド番号です。 ベジェ曲面は、ベジェ曲線の GL_MAP1_VERTEX_3, glMap1f(), glMapGrid1f(), glEvalMesh1() の代わりに GL_MAP2_VERTEX_3, glMap2f(), glMapGrid2f(), glEvalMesh2() を使えば描画できます。 | |
| PENGUINITIS | |