如何使用B样条曲线的起点和终点在其的第一个控制顶点和最后一个控制顶点上?
答案是调整其节点矢量,使其具有k个重复度,k为阶数。
比如,k=3,有4个控制点为 {-2.0,0.0,1.0},{-1.0,1.0,0.0},{1.0,0.0,-1.0},{-1.0,-1.0,1.0},就需要有7个节点向量,可以是这样子 {1,1,1,2,3,3,3}
得到的图形:
这样的B样条曲线叫做准均匀B样条曲线,英文术语是Open Uniform, 是按照节点向量的类型来分类的。
另一个常见的需要是,一个凸多边形去控制其B样条曲线在其内部形成一个封闭的曲线,如何做到?
经过编程尝试,发现要求首尾有k-1个控制顶点重复,k为阶数。实际上还对节点向量有要求,要求前2k-1个节点与后2k-1个节点的间距h(h>0)相同,即tn+1+i = ti(i = 0, ..., 2k-2).。这里2k-1是这么来的,它等于节点比控制顶点多k个,加上重复的k-1个控制顶点。
比如,k=3,有6个控制点为{-2.0,0.0,1.0},{-1.0,1.0,0.0},{1.0,0.0,-1.0},{-1.0,-1.0,1.0},{-2.0,0.0,1.0},{-1.0,1.0,0.0},就需要有个9个节点向量,比如是均匀B样条的节点形式 {1,2,3,4,5,6,7,8,9},得到的图形:
以上的B样条曲线都是用opengl中的glu库函数gluNurbsCurve画的。