Bezier(精选4篇)
Bezier 篇1
1. 引言
曲线曲面的表示是计算机图形学的重要内容,它是描述物体的外型,建立所画对象的数学模型的有力工具。1962年,法国雷诺汽车公司的工程师P.E.Bezier构造了一种以逼近为基础的参数曲线和曲面的设计方法,以这种方法为主完成了一个称为UNISURF的曲线和曲面设计系统,并1972年在公司投入使用。Bezier方法将函数逼近同几何表示结合起来,使得设计师在工程设计中能比较直观地意识到所给条件与设计出的曲线之间的关系,能方便地通过控制输入参数来改变曲线的形状。
Bezier曲线具有良好的几何性质,能简洁、完美地描述和表达自由曲线曲面,在CADPCAM技术中得到广泛的应用。本文主要对Bezier的生成算法,构成曲线的性质特点,以及实用问题进行了研究。
2. 算法描述
2.1 Bezier曲线的定义
Bezier曲线是由一组折线集或称之为Bezier特征多边形来定义的。曲线的起点和终点分别与该多边形的起点、终点重合,且多边形的第一条边和最后一条边表示了曲线在起点和终点处的切矢量方向。曲线的形状趋于特征多边形的形状。当给定空间n+1个点的位置矢量Pi (i=0, 1, 2,…,n),则Bezier曲线可定义为:
其中,Pi构成该Bezier曲线的特征多边形,Bi, n (t)是n次Bernstein基函数:
2.2 Bezier曲线的主要性质
2.2.1 端点性质。
Bezier曲线的起点、终点与相应的特征多边形的起点、终点重合。Bezier曲线的起点和终点处的切线方向和特征多边形的第一条边及最后一条边的走向一致。
2.2.2 对称性。
若保持原全部顶点的位置不变,只是把次序颠倒过来,则新的Bezier曲线与原Bezier曲线形状相同,但方向相反。这个性质说明Bezier曲线在起点处有什么几何性质,在终点处也有相同的性质。
2.2.3 凸包性。
在几何图形上,Bezier曲线P (t)在t∈[0, 1]中各点是控制点Pi的凸线性组合,即曲线Pi落在构成的凸包之中。
2.2.4 几何不变性。
Bezier曲线位置与形状与其特征多边形顶点的位置有关,它不依赖坐标系的选择。
2.2.5 变差缩减性。
若Bezier曲线的特征多边形是一个平面图形,则平面内任意直线与P (t)的交点个数不多于该直线与其特征多边形的交点个数,这一性质叫变差缩减性质。此性质反映了Bezier曲线比其特征多边形的波动还小,也就是说Bezier曲线比特征多边形的折线更光顺。
2.2.6 仿射不变性。对于任意的仿射变换A:
即在仿射变换下,P (t)的形式不变。
2.3 Bezier曲线的递推算法
如何产生Bezier曲线上的一系列点?可以用Bezier曲线方程直接计算,但是那种方法只适用三次Bezier曲线,既不通用且计算工作量大,因此用Casteljau递推算法则要简单得多。
Casteljau算法:给定空间n+1个点Pi (i=0, 1,…,n)及参数t,则有:
其中Pi0 (t)即为Pi, Pin (t)是在曲线上具有参数t的点。当n=3时,用Casteljau算法递推出的Pir (t)呈直角三角形,对应结果如图1所示。
该三角形垂直边上的点P0, P1, P2, P3是Bezier曲线P (t)在0≤t≤1内的控制点,斜边上的点P0, P01, P22, P03是P (t)在0≤t≤内的控制点, 水平直角边P03, P12, P21, P30是P (t) 在1/2≤t≤1内的控制点。这种分割Bezier曲线控制多边形的方法为绘制离散化的Bezier曲线提供了方便。
3. 应用实例
在Bezier曲线中常见的是三次Bezier曲线(如图2),它有四个控制点P0P1P2P3,其表达式为:
本文中实现三次Bezier曲线的主要程序段:
4. 结语
Bezier曲线在图形处理中很有意义,本文深入研究了Bezier曲线的生成算法,还用C语言实现了算法,在图形处理方面有一定的应用价值。
参考文献
[1]任敏.绘制Bezier曲线的算法研究[J].现代机械, 2007, (01) .
[2]徐甜.刘凌霞.Bezier曲线的算法描述及其程序实现[J].安阳师范学院学报, 2006, (5) .
[3]孙家广.计算机图形学 (第三版) [M].北京:清华大学出版社, 1998.
[4]谭浩强.C程序设计 (第二版) [M].北京:清华大学出版社, 1999.
Bezier 篇2
关键词:Bezier曲线,控制顶点,矢量
曲线是计算机图形学的重要内容, 它是描述物体的外型, 建立所画对象的数学模型的有力工具[1]。Bezier曲线因具有良好的几何性质, 能简洁、完美地描述和表达自由曲线曲面, 是最常用的曲线之一。
在利用Bezier曲线造型时, 如果阶次太高, 固然能表示复杂的造型, 但易造成计算复杂度增加, 控制顶点增多, 形状不易控制。而二次Bezier曲线表示能力有限, 又是平面曲线, 所以最常用的就是三次Bezier曲线。本文讨论了三次Bezier曲线传统递推算法实现, 又提出了一种新的递推算法实现, 使其绘制速度和绘制效果大大提高。
1 Bezier曲线的描述
定义:给定空间n+1个点的位置矢量Pi (i=0, 1, 2, …, n) , 则Bezier参数曲线上各点坐标的插值公式是:
其中, Pi构成该Bezier曲线的特征多边形, 是n次Bernstein基函数:
2 Bezier曲线的分割定理
Bezier曲线P (t) , 经中间某点分割而得到的两条曲线分别为Q和R, 这两段曲线同样是Bezier曲线, 它们的控制定点由de Casteljau算法产生, 即:P=Q+R
3 三次Bezier曲线的生成算法
曲线Q曲线P和曲线P (t) 相比, 显然其控制顶点离曲线更近, 那么, 再次把曲线Q分割, 分割后得到的曲线的控制定点和曲线将距离更近。依此类推, 如果不停的分割, 将会得到一系列分割后的Bezier曲线和其控制顶点, 当控制定点和曲线的距离小于指定的很小正数ε, 就可以用这些控制顶点的连线所组成的折线近似代替曲线。为方便计算, 设分割的比例系数t=1/2。另外, 还应注意一种特殊情况, 如图2所示, 当控制顶点所组成的控制多边形中相邻两边的夹角θ为锐角时, 控制多边形与Bezier曲线外形有较大的差距, 此时控制顶点的连线不宜作为Bezier曲线的近似曲线, 因而需直接进行下一步的曲线分割。
因此有以下两种情况:
(1) 当 时, 据下述3.1或3.2的方法进行处理。
(2) 当 时, 直接进行曲线分割分割。
3.1 传统递推算法实现。
如图3所示, d1'和d2'表示控制顶点到曲线的距离, 当max (d1', d2') 小于指定的很小正数ε, 即可以用这些控制顶点的连线所组成的折线近似代替曲线, 而不再对曲线进行再次分割。直接计算控制顶点P1P2到Bézier曲线P (t) 的距离很麻烦, 但是由Bézier曲线的凸包性可知,
d1和d2表示点Pi到线段P0P3的距离, 计算点到直线的距离要相对容易, 故在一定的误差范围内, 可用右端代替左端。
当d1和d2中最大值小于ε时, 就可以用控制顶点的连线代替曲线段。
3.2 新递推算法实现。
4所示, 图中阴影部分面积为A1、A2, 当max (A1、A2) 小于指定的很小正数ε, 即可以用这些控制顶点的连线所组成的折线近似代替曲线, 而不再对曲线进行再次分割。
阴影部分面积A1, A2如下:
如图5所示, 当满足条件曲线分割时A1, i、A2, i分别为
结束语
综上所述, 绘制三次Bezier曲线如果用传统递推算法实现需要两次用到矢量叉乘计算点到直线的距离, 而如果采用新的递推算法实现, 除了第一次计算A1、A2的面积需用矢量叉乘之外, A1, i+1只需用上一次的计算结果A1, i即可求得, 计算量降低了一半, 算法效率提高显著。经实验验证, 绘制出的曲线效果良好。
参考文献
[1]杜华.Bezier曲线算法研究与实现[J].考试周刊, 2010, 12:159-160.
[2]倪明田, 吴良芝.计算机图形学) [M].北京:北京大学出版社, 1999:218-221.
[3]孙家广.计算机图形学 (第三版) [M].北京:清华大学出版社, 1998:306-307.
[4]罗振东, 廖光裕.计算机图形学[M].上海:复旦大学出版社, 1993:114-128.
Bezier 篇3
对于参数曲线曲面的凸性问题,国内外已有很多学者研究。参数Bezier曲线的凸性问题,文献[1,2]已基本解决。参数曲面的凸性研究一直是人们感兴趣的问题,三角域上非参数Bezier曲面的凸性文献[3]已得到令人满意的结果,而参数Bezier曲面的凸性要复杂得多。20世纪80年代以后,文献[4,5]对其作了一些研究,文献[6]对参数Bezier曲面的局部凸问题也得到几个充分条件。但是参数曲面与其控制网格的凸性间的关系,并未得到满意的回答,仍有待进一步研究。
本文着重研究了Bezier曲面局部凸的充要条件与控制顶点网格形状的关系,并且在几何上将网格的形状与曲面的凸性之间建立了联系。将凸性分析的结论应用到曲面拼接中,得到了Bezier曲面保凸拼接的条件,并且给出了Bezier曲面保凸拼接实例。
1Bezier曲面的凸性分析
了解了曲面的凸性与曲率间的关系后,下面就来探讨具体到参数Bezier曲面其凸性与曲率及控制顶点间是否也存在着某种关系。以下所说的凸性都是指局部凸。
设有参数曲面:
∑∶r=r(u,v)
对曲面∑上任何一点P,设曲面在点P法向量为n, 过点P的切平面为π。
对于参数曲面∑∶r(u,v),(u,v)⊂D∈R2,如果∀(u,v)∈D,若:
ru×rv≠0
则称∑是正则曲面。
设P是正则曲面∑上的任意一点,若存在P点的某个邻域,在该邻域内,对应的曲面完整地处在P点切平面的一侧, 则称∑是局部凸曲面。
文献[6]给出了局部凸曲面的充分必要条件:
引理1[6] 正则曲面∑:r(u,v)(r(u,v)∈C2(D),D∈R2)为局部凸的充要条件是:
L≥0 N≥0 LN-M2≥0
或
L≤0 N≤0 LN-M2≥0
设m×n次Bezier曲面的参数表示为:
其中bi,j(i=0,1,…,m;j=0,1,…,n)是网格控制点,B
m×n次Bezier曲面的一阶偏导矢和二阶偏导矢分别为:
其中Δ为向前差分。于是有:
其中:
Bijkl=B
i=0,…,m-1;j=0,…,n;k=0,…,m;l=0,…,n-1
于是由引理1得到Bezier曲面局部凸的以下判别条件。
定理1m×n次Bezier曲面式(1)局部凸的充要条件是:
若Bezier曲面的控制网是平行四边形网格,此时Bezier曲面就是平移曲面,那么有:
Δ1,1bi,j=(bi+1,j+1-bi+1,j)-(bi,j+1-bi,j)
或
Δ1,1bi,j=(bi+1,j+1-bi,j+1)-(bi+1,j-bi,j)
这时得到Bezier曲面局部凸的一个充分条件。
定理2 若m×n次Bezier曲面的控制网是平行四边形网格,则曲面为局部凸的一个充分条件是:
(3)
i,γ=0,1,…,m-1;j,t=0,1,…,n;k,α=0,1,…,m;
l,ξ=0,1,…,n-1;s=0,1,…,m-2;β=0,1,…,n-2。
证明:因为Bernstein基函数的非负性,当上式的第一、二式成立时,说明式(2)的前两式成立,(Δ1,0bi,j,Δ0,1bk,l,Δ1,1bs,t)=0加上前两个条件,显然式(2)的第三式也成立,故定理得证。
推论1 当m×n次Bezier曲面的控制子网格为平行四边形时,若:
L≥0(≤0) N≥0(≤0)
则该Bezier曲面为局部凸曲面。
此时,需要说明的一点是式(3)只是Bezier曲面局部凸的一个充分条件,并非必要条件。那么Bezier曲面的凸性与网格的凸性之间到底有什么关系,首先来看Bezier网格的定义。
若Bezier网格顶点满足条件:
其中:
i=0,1,…,m;j=0,1,…,n;
k1=1,2,…,m-i;k2=1,2,…,n-j
则称Bezier网格是局部下凸(或上凸)的。
有了Bezier网格局部凸的定义,容易得到Bezier网格的局部凸性定理。
定理3 若m×n次Bezier网的控制顶点满足条件:
(4)
i=0,1,…,m-1;j,t=0,1,…,n;k,α=0,1,…,m;
l=0,1,…,n-1;s=0,1,…,m-2;β=0,1,…,n-2。
则Bezier网是局部凸的。
证明:如果Bezier网的控制顶点满足条件式(4),那么可以推出下式成立:
p=0,1,…,m-i-2;q=0,1,…,n-j-2
或:
进一步有:
k1=1,2,…,m-i;k2=1,2,…,n-j
即:
即Bezier网是局部凸的。定理得证。
由定理1和定理3易得到m×n次Bezier曲面式(1)局部凸的一个充分条件。
定理4 当m×n次Bezier曲面(1)满足条件:
(5)
i,γ=0,1,…,m-1;j,t=0,1,…,n;k,α=0,1,…,m;
l,ξ=0,1,…,n-1;s=0,1,…,m-2;β=0,1,…,n-2。
则Bezier曲面是局部凸的。
2Bezier曲面的保凸拼接
工业产品形状的数学描述重在解决曲面的数学描述。由于实际形状的复杂性,用单一曲面往往是难以实现的,很多时候都采用拼接曲面,拼接的曲面间要达到怎样的光滑连接,这就涉及到曲面的连续性问题,进而在连续的条件下,又要求拼接后的曲面具有保凸性。既然是保凸拼接,那么原曲面片必定是凸的,所以下面讨论的都是局部凸曲面间沿v方向的拼接,沿u向的拼接是同样的原理。接下来讨论具有公共边界线的两局部凸Bezier曲面的保凸拼接。
设有两m×n次Bezier曲面片:
(6)
分别由控制顶点ai,j与bi,j定义。
2.1位置连续的保凸拼接
如果我们只需要位置连续,即它们具有公共边界p(s,1)=q(u,0), 于是有ai,n=bi,0。要进行保凸拼接,那么对于上凸的曲面还要保证在连接边界处满足:
(Δ0,1ak,n-1×Δ1,0ak-1,n)·Δ0,1bk,0≤0 (7)
而对于下凸的曲面还要保证在连接边界处满足:
(Δ0,1ak,n-1×Δ1,0ak-1,n)·Δ0,1bk,0≥0 (8)
2.2C1拼接的条件
则有:
因为Bezier基函数的独立性,有:
式(9)说明两曲面具有公共连接线及每个公共顶点与位于两侧各一个相邻非公共顶点共线,且两网格边长相等。
对于C1拼接的曲面,我们对其进行凸性分析,要使拼接后的曲面保持原有的凸性,首先原曲面应该都是凸曲面。若两曲面是C1拼接的,那么它们满足条件式(9),由于Δ0,1ak,n-1=Δ0,1bk,0,所以此时连接线附近的控制顶点满足:
(Δ0,1ak,n-1×Δ1,0ak-1,n)·Δ0,1bk,0=0
可知C1拼接的曲面是保凸的。而Cn(n≥1)的拼接首先必须满足C1连续,因此Cn(n≥1)的曲面拼接都是保凸的。
定理5 具有公共边界线的局部凸Bezier曲面片间的Cn(n≥1)拼接都是保凸的。
3保凸拼接的Bezier曲面实例
具有公共边界曲面的拼接在实际应用中会有局限性,这里讨论的保凸拼接曲面,即已知一凸曲面,来另一凸曲面使之进行保凸拼接。设有一张下凸的双三次Bezier曲面P(如图1所示),沿v向的C1保凸拼接曲面为图2(a),而沿u向的C1保凸拼接曲面为图2(b)。
4结语
本文所讨论的曲面凸性与控制网格间的关系时得到了控制顶点的表达式,将该表达式直观表示时都将问题转化为控制子网格为平行四边形的特殊情况,而对于控制子网为一般情形时的问题应加以进一步的研究。同时,具有公共边界曲面的拼接,在实际应用中会有各种不同的要求,本文只给出了Bezier曲面的Cn保凸拼接方法,后续的研究会进一步讨论Bezier曲面的Gn保凸拼接以及对B样条的凸性和保凸拼接开展深入讨论。
摘要:通过分析Bezier曲面局部凸的充要条件与控制顶点网格形状的关系,在几何上将网格的形状与曲面的凸性之间建立联系,导出Bezier曲面局部凸的几个充要条件。将凸性分析的结论应用到Bezier曲面拼接中,得到Bezier曲面保凸拼接的条件,并且证明带有公共边界线的两个局部凸Bezier曲面的Cn(n≥1)拼接后,仍然是凸的且凸性相同。最后,给出几个三次Bezier曲面保凸拼接实例。
关键词:Bezier曲面,控制网格顶点,凸性,保凸拼接
参考文献
[1]Liu C,Trass C R.On convexity of planar Curves and its Application in CAGD[J].CAGD,1977,14(6):653-669.
[2]刘鼎元.平面n次Bezier曲线的凸性定理[J].数学年刊,1982,3(1):45-55.
[3]王国瑾,等.计算机辅助几何设计[M].北京:高等教育出版社,2001.
[4]华宣积,邝志全.Bezier曲面的凸性定理[J].浙江大学学报,1982:182-189.
[5]朱功勤,殷明.张量积上参数Bezier曲面保凸的充分条件[J].计算数学,1994:273-277.
[6]Koras G D,Kaklis P D.Convex conditions for parametric tensor-prod-uct B-spline surfaces[J].Advances in Computational Mathematics,1999(10):291-309.
[7]方逵,邓四清,谭德松,等.三次有理插值样条曲线曲面[J].计算机应用与软件,录用待发表.
Bezier 篇4
1 曲线节点插入技术在曲面中的推广
1.1 NURBS曲面
假设一张次NURBS曲面如下形式
式中:dij是控制网格(m+1列n+1行)中第i列第j行的点。ωij是与顶点对应的权因子,Nik与Njh分别是u向k次和v向次的规范B样条基,分别由节点矢量u,v按Cox-DeBoor递推公式决定。
1.2 曲面上的节点插入技术
假设NURBS曲面的向节点矢量,u规范化后为
假定u为网格横向,v为纵向,则这个新的节点矢量ul决定了一组新的B样条基N
以控制网格中的第j行为例,新控制顶点d
其中s=1,2,…,l,ω
以上对控制顶网格中的第j行沿u向l级递推,由图1所示,将虚线框中k-1个老顶点用实框中新顶点所替换,其余的老控制顶点不变。权值的处理方法同理可得。
当l+r=k时,实框中最后一行的控制顶点就合成一个点d
2 曲面的NURBS向分段有理Bezier表示形式的转化
2.1 B样条曲面转化为Bezier曲面的经典算法
对于k次B样条曲线的节点矢量满足端点重复度为k+1,内部节点的重复度为k时,则B样条曲线就是一分段有理Bezier曲线,重复节点之间的一段曲线就是一个有理Bezier曲线。基于此对于曲面的情况Boehm提出过这样的思路:对控制网格(k×k)逐行利用曲面节点插入技术直到每一行对应的u向内部节点(uk+1…,…um)的重复度全部达到k,则将生成一张新的控制网格定义其为中间网格。再对这中间网格逐列执行插入算法直到每一列对应的v向内节点全达到h重,则整个中间网格最终可转换成Bezier网格。经过研究,文中提出了一种改进的优化算法,可简化整个转换过程。
2.2 电磁散射计算中曲面的NURBS到Bezier转换的优化算法
在电大尺寸的RCS计算中,要求在NURBS曲面转化过程简单易于实现计算量尽量的小,并且转化后的Bezier曲面片最好都能够拥有单独的控制网格信息和规范的数据存储方式,以便于后续的计算。上述“逐行”,再“逐列”的经典算法直接从控制网格入手,不但过程繁琐,计算量大,节点区间存在着重复处理而且对结果结果还需要进一步的处理来寻找相应的控制网格信息。
由式(3),式(4)知NURBS控制网格的u向插值运算中的递推过程在不同的控制行里的步骤相同,即递推涉及的控制顶点及权因子在每一行中对应相同的序号,且由式(5)知α
先对u向寻找非空节点区间段,最多可找出m-k个区间,根据找到区间将控制网格沿u向划分成对应的网格片。由于在“片”内每一行的曲面节点插入过程均一样,因此分片处理可以简并相同递推量的计算,将整“片”对应的节点矢量区间两端节点插值k为次重复度后即完成了对一个“片”的转化。同理依次从左到右直到所有的“片”都被处理完,如图2所示,则生成过渡网格。再对整个过渡网格进行v向分“片”,同理处理所有的片,最后将生成一系列Bezier控制网格。这样一种处理方式下使插入算法原来要处理的(m-k)(n+1)+(n-h)(m+1)个节点区间的情况缩减为(m-k)+(n-h)个,减少了节点插入的次数,避免重复的递推过程,另外在对行执行节点插入计算时,进一步再将B样条曲线递推算法中不同级之间递推系数的关系推广到曲面上后,有α
3 算例
以文献[6]中的图形数据为例,利用Matlab,按其NURBS表示生成的图形见图3(a),应用文中的算法将其转化为分段有理Bezier形式后生成的图形,如图3(b),分片的图3(c)所示,与原NURBS曲面相同。但曲面拼接处的光滑性会降低,对于RCS计算而言,对目标的光滑性要求不高,不会影响计算结果。
4 结束语
文中提出的算法在曲面次数高、形状复杂、控制顶点数大、面片数量多的情况下优势尤为明显。由于Bezier在数值计算方面的稳定性和简洁性,因此采用NURBS技术来进行几何建模,再用文中的算法将其转化为分段Bezier表示形式来进行数值计算。在不损失模型精度的同时,提高了整个工程计算的速度和可靠性。另外,文中对控制顶点“分块”处理的方法可应用于NURBS曲面的生成算法中,提高效率。
参考文献
[1]施法中.计算机辅助几何设计与非均匀有理B样条[M].北京:高等教育出版社,2001.
[2]Perez J,Catedra M F.Application of Physics Optics to the RCS Computation of Bodies Modeled with NURBS Surfaces[J].IEEE Trans on Antennas Propagation,1994,42(10):1404-1411.
[3]Boehm W.Inserting New Knots Into B-spline Curves[J].Computer Aided Design,1980,12(4):199-201.
[4]Boehm W.Generating the Bezier Points of B-spline Curves and Surfaces[J].Computer Aided Design,1981,13(6):365-366.
[5]王鸿.NURBS曲线转化为Bezier表示形式的快速算法[J].西安公路交通大学学报,2000,20(3):120-122.
【Bezier】推荐阅读: