'コントロールポイント配列 cp(xyz(x=0, y=0, z=0),
Point Number)
'Cの場合と配列要素の順序が逆になるので注意
Dim cp(0 To 2, 0 To 4) As Single
cp(0, 0) = -4: cp(1, 0) = -4: cp(2, 0) = 0#
cp(0, 1) = -2: cp(1, 1) = 4: cp(2, 1) = 0#
cp(0, 2) = 2: cp(1, 2) = -4: cp(2, 2) = 0#
cp(0, 3) = 4: cp(1, 3) = 4: cp(2, 3) = 0#
glMap1f GL_MAP1_VERTEX_3, 0#, 1#, 3, 4, cp(0, 0)
glEnable GL_MAP1_VERTEX_3
glBegin (GL_LINE_STRIP)
For n = 0 To 30
glEvalCoord1f (n / 30)
Next
glEnd
glMap1{fd} target, u1, u2, stride, order, *points
target:制御点の意味
GL_MAP1_VERTEX_3 x,y,z頂点の座標
GL_MAP1_VERTEX_4 x,y,z,w頂点の座標
GL_MAP1_INDEX カラー指標
GL_MAP1_COLOR4 R,G,B,A
GL_MAP1_NORMAL 法線座標
GL_MAP1_TEXTURE_COORD_1 sテクスチュア座標
GL_MAP1_TEXTURE_COORD_2 s,tテクスチュア座標
GL_MAP1_TEXTURE_COORD_3 s,t,rテクスチュア座標
GL_MAP1_TEXTURE_COORD_4 s,t,r,qテクスチュア座標u1, u2:パラメータの範囲(通常0,1)
stride:次の制御点までにいくつの値があるか.(次の制御点までのオフセット)
order: スプラインの次数+1(3次スプラインの場合4)
*points:制御点の配列(配列の0番目を渡す)glEvalCoord1{fd} n
1次元の写像の計算
n:パラメータ
Dim cp(0 To 2, 0 To 3, 0
To 3) As Single
cp(0, 0, 0) = -1.5: cp(1,
0, 0) = -1.5: cp(2, 0, 0) = 4#
cp(0, 1, 0) = -0.5: cp(1,
1, 0) = -1.5: cp(2, 1, 0) = 2#
cp(0, 2, 0) = 0.5: cp(1,
2, 0) = -1.5: cp(2, 2, 0) = -1#
cp(0, 3, 0) = 1.5: cp(1,
3, 0) = -1.5: cp(2, 3, 0) = 2#
cp(0, 0, 1) = -1.5: cp(1,
0, 1) = -0.5: cp(2, 0, 1) = 1#
cp(0, 1, 1) = -0.5: cp(1,
1, 1) = -0.5: cp(2, 1, 1) = 3#
cp(0, 2, 1) = 0.5: cp(1,
2, 1) = -0.5: cp(2, 2, 1) = 0#
cp(0, 3, 1) = 1.5: cp(1,
3, 1) = -0.5: cp(2, 3, 1) = 1#
cp(0, 0, 2) = -1.5: cp(1,
0, 2) = 0.5: cp(2, 0, 2) = 4#
cp(0, 1, 2) = -0.5: cp(1,
1, 2) = 0.5: cp(2, 1, 2) = 0#
cp(0, 2, 2) = 0.5: cp(1,
2, 2) = 0.5: cp(2, 2, 2) = 3#
cp(0, 3, 2) = 1.5: cp(1,
3, 2) = 0.5: cp(2, 3, 2) = 4#
cp(0, 0, 3) = -1.5: cp(1,
0, 3) = 1.5: cp(2, 0, 3) = -2#
cp(0, 1, 3) = -0.5: cp(1,
1, 3) = 1.5: cp(2, 1, 3) = -2#
cp(0, 2, 3) = 0.5: cp(1,
2, 3) = 1.5: cp(2, 2, 3) = 0#
cp(0, 3, 3) = 1.5: cp(1,
3, 3) = 1.5: cp(2, 3, 3) = -1#
glMap2f GL_MAP2_VERTEX_3,
0, 1, 3, 4, 0, 1, 12, 4, cp(0, 0, 0)
glEnable GL_MAP2_VERTEX_3
Dim
i As Integer, j As Integer
For j = 0 To 8 '8分割したメッシュを書く
glBegin GL_LINE_STRIP
For i = 0 To 30
glEvalCoord2f i / 30, j / 8
Next
glEnd
glBegin GL_LINE_STRIP
For i = 0 To 30
glEvalCoord2f j / 8, i / 30
Next
glEnd
Next
glMap2{fd} target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, *points
target:制御点の意味
GL_MAP1_VERTEX_3 x,y,z頂点の座標
GL_MAP1_VERTEX_4 x,y,z,w頂点の座標
GL_MAP1_INDEX カラー指標
GL_MAP1_COLOR4 R,G,B,A
GL_MAP1_NORMAL 法線座標
GL_MAP1_TEXTURE_COORD_1 sテクスチュア座標
GL_MAP1_TEXTURE_COORD_2 s,tテクスチュア座標
GL_MAP1_TEXTURE_COORD_3 s,t,rテクスチュア座標
GL_MAP1_TEXTURE_COORD_4 s,t,r,qテクスチュア座標u1, u2, v1, v2 :パラメータの範囲(通常0,1)
ustride, vstride:次の制御点までにいくつの値があるか.
(次の制御点までのオフセット)
uorder, vorder: 制御点の数
*points:制御点の配列(配列の0番目を渡す)glEvalCoord2{fd} u, v
2次元の写像の計算
u,v:パラメータ
FillArray4f MaterialAmbient(), 0.1, 0.1, 0.1, 1
FillArray4f MaterialDiffuse(),
0.4, 0.1, 0.1, 1!
FillArray4f MaterialSpecular(),
0.5, 0.1, 0.1, 1!
glMaterialfv GL_FRONT, GL_AMBIENT,
MaterialAmbient(0)
glMaterialfv GL_FRONT, GL_DIFFUSE,
MaterialDiffuse(0)
glMaterialfv GL_FRONT, GL_SPECULAR,
MaterialSpecular(0)
Dim cp(0 To 2, 0 To 3, 0
To 3) As Single
cp(0, 0, 0) = -1.5: cp(1,
0, 0) = -1.5: cp(2, 0, 0) = 4#
cp(0, 1, 0) = -0.5: cp(1,
1, 0) = -1.5: cp(2, 1, 0) = 2#
cp(0, 2, 0) = 0.5: cp(1,
2, 0) = -1.5: cp(2, 2, 0) = -1#
cp(0, 3, 0) = 1.5: cp(1,
3, 0) = -1.5: cp(2, 3, 0) = 2#
cp(0, 0, 1) = -1.5: cp(1,
0, 1) = -0.5: cp(2, 0, 1) = 1#
cp(0, 1, 1) = -0.5: cp(1,
1, 1) = -0.5: cp(2, 1, 1) = 3#
cp(0, 2, 1) = 0.5: cp(1,
2, 1) = -0.5: cp(2, 2, 1) = 0#
cp(0, 3, 1) = 1.5: cp(1,
3, 1) = -0.5: cp(2, 3, 1) = 1#
cp(0, 0, 2) = -1.5: cp(1,
0, 2) = 0.5: cp(2, 0, 2) = 4#
cp(0, 1, 2) = -0.5: cp(1,
1, 2) = 0.5: cp(2, 1, 2) = 0#
cp(0, 2, 2) = 0.5: cp(1,
2, 2) = 0.5: cp(2, 2, 2) = 3#
cp(0, 3, 2) = 1.5: cp(1,
3, 2) = 0.5: cp(2, 3, 2) = 4#
cp(0, 0, 3) = -1.5: cp(1,
0, 3) = 1.5: cp(2, 0, 3) = -2#
cp(0, 1, 3) = -0.5: cp(1,
1, 3) = 1.5: cp(2, 1, 3) = -2#
cp(0, 2, 3) = 0.5: cp(1,
2, 3) = 1.5: cp(2, 2, 3) = 0#
cp(0, 3, 3) = 1.5: cp(1,
3, 3) = 1.5: cp(2, 3, 3) = -1#
glMap2f GL_MAP2_VERTEX_3,
0, 1, 3, 4, 0, 1, 12, 4, cp(0, 0, 0)
glEnable GL_MAP2_VERTEX_3
glEnable GL_AUTO_NORMAL
glMapGrid2f 8, 0, 1, 8,
0, 1
glPushMatrix
glRotatef 85#, 1, 1, 1
glEvalMesh2 GL_FILL, 0, 8, 0, 8
glPopMatrix
glMapGrid2{fd} nu, u1, u2, nv, v1, v2
nu, nv :写像の間隔の設定
u1, u2, v1, v2:パラメータの範囲
glMapMesh2{fd} mode, p1, p2, q1, q2
mode GL_POINTS, GL_LINE, GL_FILL(塗りつぶし)
p1, p2 グリッドの領域変数の範囲