第7章: 曲线控制与生成
贝塞尔曲线(Bezier Curve)
定义
贝塞尔曲线是计算机图形学中用于生成平滑曲线的一种参数曲线。
OpenGL中使用贝塞尔曲线
控制点设置
为了绘制贝塞尔曲线,首先需要指定控制点数组:
plaintext
const int numcontrolpts = 4; // 控制点数量
GLfloat controlpts[numcontrolpts][3] = {
{-0.9, -0.9, 0.0},
{-0.5, 0.2, 0.0},
{0.9, -0.9, 0.0},
{0.9, 0.9, 0.0}
};
初始化求值器
使用glMap1f
函数初始化一个求值器,设置曲线参数:
plaintext
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, numcontrolpts, &controlpts[0][0]);
启用求值器
plaintext
glEnable(GL_MAP1_VERTEX_3);
绘制曲线
通过glEvalCoord1d
函数使用求值器绘制曲线:
plaintext
glBegin(GL_LINE_STRIP);
for (int i = 0; i <= numdrawsegs; ++i) {
GLdouble t = GLdouble(i) / numdrawsegs;
glEvalCoord1d(t);
}
glEnd();
简化绘制过程
使用glMapGrid1d
函数指定网格参数值,简化绘制过程:
plaintext
glMapGrid1d(numdrawsegs, 0.0, 1.0);
NURBS(非均匀有理B样条曲线)
定义
NURBS是一种通过控制点和权重因子定义的曲线,能够精确表达标准几何形状。
特点
- 控制点表示为齐次坐标系统,包含额外的缩放因子。
- 控制点公式为,。
- 权重作为每个点的标量权重,提供对曲线形状的额外控制。
应用
NURBS广泛用于表面设计,例如通过在xy平面上建模一个样条曲线,然后围绕y轴旋转该曲线生成旋转面。
数学公式示例
- 贝塞尔曲线参数公式:
其中是贝塞尔基函数,是控制点。
- NURBS曲线参数公式:
其中是B样条基函数,是权重,是控制点。
这一章节详细介绍了如何在OpenGL中使用贝塞尔曲线和NURBS曲线进行图形生成,以及这些技术的数学基础和实际应用。