首页 > 编程知识 正文

b样条曲线原理,做课堂笔记需要记哪些

时间:2023-05-06 19:44:33 阅读:48496 作者:3650

为什么b样条曲线Bezier曲线/曲面为局部的修改和编辑

对于贝塞尔曲线/曲面接合,请参阅满足几何连续条件是十分困难的

在b样条的历史1946年,Schoenberg提出了一种基于样条的方法来逼近曲线;

b样条的动机来源于插值中的Runge-Kutta现象。 高阶多项式容易产生不稳定的上下抖动。

为什么不选用分段低阶多项式通过连续的连接来代替高阶多项式呢? 这就是样条(分段低阶多项式)的思想。

1972年,在Schoenberg工作的基础上,Gordon和Riesenfeld提出了b样条和一系列相应的几何算法。

如何求解b样条函数的插值可以通过求解三对角方程来完成。

对于某个区间分割,可以同样计算样条的插值。

特定区间的所有样条函数构成线性空间。 这个线性空间的基函数称为b样条基函数。

b样条基函数

p(t )=i=04PiNi,4

1.B样条函数Ni,K(T )的非零区间是什么? ((ti,ti k ) ) )。

-小部分不是0,大部分是0,保证b样条的局部性。

2 .总共需要多少个节点?

与P0对应的n0、4、n0、4对应的非零区间是(t0、t4 )

与P1对应n1、4、n1、4对应的非零区间是[t1、t5]

与P2对应的n2、4、n2、4对应的非零区间是[t2、t6]

与P3对应n3、4、n3、4对应的非零区间是[t3、t7]

与P4对应的n0、4、n4、4对应的非零区间是(t4、t8 )

-共(N K 1)个

3 .用b样条插值的曲线的定义区间是什么?

在上图中,t3 - t5有定义,其他区间没有意义。 总共五个基函数。 k楼是指一段内必须有k个基函数,这样就有意义了。 否则,少了一个基底就不完整了。每个基函数跨越了k个区间

b样条曲线分类的一般曲线可以根据起点和终点是否重叠来分类。

-不重叠:开放曲线

-重叠:闭合曲线

根据节点向量中节点的分布,b样条可分为四类:

(1)均匀B样条

结均匀分布,如0、1、2、3、4、5、5、7

0、1、2、3定义一个段落,1、2、3、4定义另一个段落。 当两端之间有三个点重叠时,可以连续两次。

最大特定:给定控制网格,就可以画出(估计出)曲线。例如,1,3两点的中点连接2,连接线段的三分之一处是均匀b样条的起点; 2、4两点的中点与3相连,相连线段的三分之一处是均匀的b样条曲线通过的点; 通过这样依次连结,能够描绘出大致均匀的b样条。

(2)准均匀B样条:将起点和终点的都有k的重复度, 曲线就会经过端点。(与均匀b样条曲线相比,起点应在1、3两点的中点与2连接,取连接线的三分之一。 )

(3)分段Bezier曲线:起始节点和终止节点都具有k的重复度,所有其他节点都具有k-1的重复度。

上述段均为贝塞尔曲线。 对于分段的贝塞尔曲线,不同的曲线段是相互独立的,移动控制点只会影响其所在的贝塞尔曲线段,其他贝塞尔曲线段不会更改。 此外,贝塞尔曲线的所有算法也同样适用于分段贝塞尔曲线。

但是,分段bezier曲线需要使用更多的参数和变量进行控制。 更多的控制点和更多的节点。

(4) 非均匀B样条

节点向量T=[t0、t1、…、tn k]中的节点以非递减阵列排列,满足以下条件:

开始节点和结束节点重复度都在k以下;

其他节点的重复度在k-1以下。

性质1:局部支持性

区间t[ti,ti 1]上的曲线至多只由k个控制点pj(j=ik1,…,I )决定。 这是因为在t[ti,ti 1]区间上最多定义了k个控制点。

更改控制点Pi仅影响区间(ti、ti k )的曲线。

性质2:连续性

p(t )在每个重复度为r的节点上具有Ck1r的连续性。

说明: k次曲线,节点向量不重复时,k次曲线为k-1次连续

。样条的概念是要比多项式低一次的几何连续性,所以k阶曲线在节点向量不重复的情况下,是k-1-1次连续。例如4阶曲线是(4-1-1=2)的连续。

性质3:凸包性
一个B样条曲线被包围在其控制顶点的凸包内部。

性质4:变差缩减性(Variation Diminishing Property)
任何一条直线与B样条曲线的交点树木不会超过该直线与B样曲线的控制多边形的交点数目。

性质5:仿射不变形
对曲线的变化可以通过对顶点的控制来选择。

性质6:直线保持性
如果控制多边形退化成为一条直线,那么B样条曲线依然在这条直线上。

性质7:灵活性
使用B样条曲线可以方便地构建如线段,尖点,切线等特殊效果。

以4阶B样条为例,如果需要包含一条线段,只需要指定控制顶点 Pi,Pi+1,Pi+2,Pi+3 共线(参照均匀B样条理解,非均匀的也有根据控制点画B样条的性质,只是不在三分之一点处)。如下图中的四顶点共线。

如果希望曲线过一个点 Pi ,只需要指定 Pi=Pi+1=Pi+2 ,即可得到尖点。如下图中的三重顶点。

如上图中两重顶点相切,如果需要曲线与直线L相切,只需要指定控制点 Pi,Pi+1,Pi+2 都在L上,并让 ti+3 的重复度小于2。

计算B样条上一点的值

计算B样条曲线的一点P(t),可以直接使用B样条的公司,但de Boor算法是一个更有效的算法

当求一个在 (tj,tj+1) 间的点t,只有在(j-k+1,j)之间有定义。将基函数用de-Boor算法展开,合并同类项后得到一个式子。即将一个k阶B样条写成了一个k-1阶B样条的形式,控制顶点变成了线性组合。

由此写成如下的递推公式求解B样条 一点的值:


de Boor算法的递推不同于Bezier的求值,只需要特定的点求解。

节点的插入 节点插入的意义

是实际中对B样条的重要的交互操作,允许在不改变一个B样条的几何形状以及阶的条件下插入一个新的节点。通过插入新的节点,可以增加一个B样条曲线的可控程度

插入新的节点t到节点区间 [ti,ti+1] 中;
节点向量变成为:

T1=[t0,t1,…,ti,t,ti+1,…,tn+k]
写成:

T1=[t10,t11,…,t1i,t1,t1i+1,…,t1n+k]

新的节点向量对应了新的B样条基函数。假设原始曲线P(t)可以由这些新的基函数和新的控制顶点 P1j (待定)来表达。

P(t)=∑j=0n+1P1jNj,k1(t)

在不改变B样条几何形状情况下,插入新节点后基函数变化,所以需要控制点变换,这时候就需要节点插入的算法

节点插入的算法


很简单的一个算法,只是对当中的点进行了求取组合数。

效果演示如下:

NUBRS

B样条曲线和Bezier曲线的缺点:
不能精确表示圆锥曲线(除了抛物线)
NUBRS(Non-Uniform Rational B-Spline,非均匀有理B样条):
目的在于找到一种精确描述圆锥曲线以及二次曲面的数学方法。

优点:
它提供了一个更一般更精确的方法,来表达并对自由曲线/曲面进行设计;
它提供了一个通用的数学公式,可以同时表示标准的解析曲线/曲面(如圆锥曲线)和自由曲线/曲面(如参数曲线/曲面);
存在稳定快速的数值计算算法;
NUBRS不仅对于仿射变换存在不变性,对于投影变换也存在不变性;
由于NURBS的控制点和权重都可以任意修改,用NURBS来进行曲线/曲面的设计可以获得更大的灵活性
非有理B样条,非有理和有理Bezier曲线/曲面都可以看成是NURBS的一种特殊形式

缺点:
需要存储权因子,如权重设计不合理,NURBS曲线可能会产生畸变;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。