通过给定的数据点/型值点反求NURBS曲线的控制点

前面已经写过了如何根据控制点绘制NURBS曲线:

三次 Bspline(B样条曲线) NURBS曲线的绘制 matlab_nurbs三次样条-CSDN博客

但有时得到的是数据点或者称为型值点,这个时候生成NURBS曲线略有不同,具体而言包括以下三个步骤:

1)计算节点矢量:

若要让一条k次 NURBS 曲线通过一组给定的型值点 Pi (0,1,2,..., n),不仅要保证曲线的首末端点与型值点重合,还应保证Pi 依次与构造曲线定义域内的节点uk+i(0, 1, 2,..., n)一一对应。通常需要对型值点进行参数化处理,以确定参数值uk+i

对于三次 NURBS 插值曲线,常用的参数化方法有以下四种:
(1)规范均匀参数化法
 

(2)规范积累弦长参数化法
 
(3)规范向心参数化法
 
(4)规范修正弦长参数化法
 

2)计算边界条件:

下式表示的线性方程组由n+1个矢量方程组成,具有n+3个未知控制顶点。

上述方程组中的节点矢量已确定,但未知顶点数大于方程数,因此求解该方程组,需要增加两个适当的边界条件。常用的边界条件有以下三种:

(1)切矢条件
要求首末端点的切线方向固定,满足下式所表示的附加方程:


( 2)自由端点条件
 自由端点条件要求首末端点具有零曲率,满足下式所表示的附加方程:

(3)闭曲线条件
 要求曲线首末端点重合且二阶连续,满足下式所表示的附加方程:

3)反算控制顶点:

采用切矢边界条件,取型值点两端点的重复度为k+1;对于三次 NURBS 曲线,其首末端点即为首末控制顶点。根据边界条件所满足的附加方程,可得到如下线性方程组:

求解上述线性方程组,即可得到所有未知的控制顶点。
通过以上方法,可以计算出给定型值点的节点矢量和控制顶点。只需根据要求选取合适的权因子,即可最终确定 NURBS 曲线的表达式。

计算实例:

假设我们选定的数据点在一条圆柱螺旋线上:

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值