只怪数学没学好
CtrlPoints: Array[0..4, 0..4, 0..2] of GLfloat = (
((-2.0, 0.0, 0.0), (-1.0, 1.0, 0.0), (0.0, 0.0, 0.0), (1.0, -1.0, 0.0), (2.0, 0.0, 0.0)),
((-2.0, 0.0, -1.0), (-1.0, 1.0, -1.0), (0.0, 0.0, -1.0), (1.0, -1.0, -1.0), (2.0, 0.0, -1.0)),
((-2.0, 0.0, -2.0), (-1.0, 1.0, -2.0), (0.0, 0.0, -2.0), (1.0, -1.0, -2.0), (2.0, 0.0, -2.0)),
((-2.0, 0.0, -3.0), (-1.0, 1.0, -3.0), (0.0, 0.0, -3.0), (1.0, -1.0, -3.0), (2.0, 0.0, -3.0)),
((-2.0, 0.0, -4.0), (-1.0, 1.0, -4.0), (0.0, 0.0, -4.0), (1.0, -1.0, -4.0), (2.0, 0.0, -4.0))
);
// 1 2 3 4 5 6 7 8 9 10
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 5, 0, 1, 15, 5, @CtrlPoints);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(10, 0.0, 1.0, 10, 0, 1.0);
glEvalMesh2(GL_FILL, 0, 10, 0, 10);
-------------------
我用Bezier绘制了一个正弦曲面,按代码绘制出来的结果:按X方向延伸,Y方向波动,习惯上的正弦波图形。
问题是glMap2f中的第4、5、8、9个参数的功能,书上只说argv4是代表u方向上控制点的跨度,argv8是代表v方向上控制点的跨度。这两个方向如何区别定义?
如果我想绘制一个,沿Y方向延伸,Z方向波动的正弦曲面,此时glMap2f如何写?