B样条曲线的控制

如何使用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画的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值