B样条曲线——de Boor递推算法实现

本文详细介绍了B样条曲线的定义、性质,包括局部性、连续性和凸包性,并对不同类型的B样条曲线进行了划分。重点讲解了de Boor算法,用于计算B样条曲线,最后给出了使用Python实现均匀B样条曲线的示例。
摘要由CSDN通过智能技术生成

B样条曲线——de Boor递推算法实现

1. 定义

  为保留Bezier方法的优点,B样条曲线的方程定义为
P ( t ) = ∑ i = 0 n P i N i , k ( t ) P(t)=\sum_{i=0}^n P_i N_{i,k}(t) P(t)=i=0nPiNi,k(t)
其中, P i ( i = 0 , 1 , … , n ) P_i(i=0,1,\dots,n) Pi(i=0,1,,n)是控制多边形的顶点, N i , k ( t ) ( i = 0 , 1 , … , n ) N_{i,k}(t)(i=0,1,\dots,n) Ni,k(t)(i=0,1,,n)称为 k k k阶( k − 1 k-1 k1次)B样条基函数,其中每一个称为B样条,它是一个由称为节点矢量的费递增参数 t t t的序列 T T T t 0 ≤ t 1 ≤ ⋯ ≤ t n + k t_0 \le t_1 \le \dots \le t_{n+k} t0t1tn+k所决定的 k k k阶分段多项式,即为 k k k阶( k − 1 k-1 k1次)B多项式样条。
  下面是基函数的递推公式,也称为de Boor-Cox公式:
{ N i , 1 ( t ) = { 1 , t i ≤ t ≤ t i + 1 0 , t &lt; t i 或者 t ≥ t i + k N i , k ( t ) = t − t i t i + k − 1 − t i N i , k − 1 ( t ) + t i + k − t t i + k − t i + 1 N i + 1 , k − 1 ( t ) . k ≥ 2 \begin{cases} N_{i,1}(t) = \begin{cases}&amp;1 ,t_i \le t \le t_{i+1} \\ &amp; 0, t &lt; t_i \text{或者} t \ge t_{i+k} \end{cases} \\ N_{i,k}(t)=\frac{t-t_i}{t_{i+k-1}-t_i}N_{i,k-1}(t)+\frac{t_{i+k}-t}{t_{i+k}-t_{i+1}}N_{i+1,k-1}(t).\quad k \ge 2 \end{cases} Ni,1(t)={ 1,titti+10,t<ti或者tti+kNi,k(t)=ti+k1tittiNi,k1(t)+ti+kti+1ti+ktNi+1,k1(t).k2<

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值