Bezier曲线和B样条曲线的研究高晶英(内蒙古民族大学数学学院,内蒙古通辽028000)摘要:本文简单的介绍了计算机辅助几何设计的历史背景以及计算机辅助几何中的Bezier 曲线和B样条曲线的概念.关键词:计算机辅助几何设计;Bezier曲线;B样条曲线THE RESEARCH OF BEZIER CURVE AND B-SPLINE CURVEGao Jingying(Inner Mongolia University for the Nationalities College of Mathematics, Inner Mongolia Tongliao028000 )Abstract: This paper briefly describes the historic background of computer-aided geometric design and concept of Bezier curve and B-spine curve.Key words: Computer-aided geometric design; Bezier curve; B-spine curve1 引言计算机辅助几何设计(CAGD)主要研究以复杂方式自由变化的曲线曲面,即所谓的自由型曲线曲面,其中参数曲线曲面造型与形状调整是CAGD的一个重要内容。
它起源于汽车制造、飞机、船舶的数学放样和外形设计,随着计算机的出现二产生并迅速发展起来的一门独立的新兴交叉学科。
它与近代数学的许多分支学科,如应用数值分析、逼近论、微分几何、应用计算方法、代数几何学、高等代数、拓扑学、微分方程与偏微分方程、分形学、小波分析等,并与一些应用性较强的现代科技知识相互渗透,如计算几何、实体造型、图形图像学、数据结构、计算机程序语言、机械设计和加工制造等学科,是计算机辅助设计、计算机辅助制造等应用系统设计开发的理论基础。
CAGD主要解决在计算机图像系统的环境下对几何外形信息的计算机表示、逼近以及用计算机控制、分析有关形状信息等问题。
随着计算机技术的飞速发展,计算机辅助几何设计在近三十年来也得到了飞速发展。
其研究工作开始于二十世纪六十年代,在几代学者的共同努力下,曲线曲面的表示和造型已形成了较为完备的几何理论体系。
CAGD的造型方法和相关的理论已广泛地应用于其他技术领域,如游戏动画制作、计算机视觉、工业造型、建筑设计等。
曲线曲面造型理论是CAGD和CG(Computer Graphics:计算机图形)的重要的内容之一,即研究用计算机来表示、分析、显示和设计关于曲线曲面的相关问题自上世纪六十年代由Coon、Bezier等大师奠定其理论基础以来,已经取得了长足的发展。
工业产品的外形一般可分为两大类:一类是如平面、圆、圆锥面、柱面、球面、等解析曲面组成的外形,许多的机械零件都是归属于这一类,通过利用画法几何和机械制图就可以清楚地表示、传递它内存的形状信息。
第二类通常是不能借助初等解析式来表示的曲面构成,而是以较为复杂的方式自由变化的曲线曲面,也就是通常意义下的自由形状的曲线、曲面构成,例如轮船、汽车、飞机等零部件外形。
CAGD的主要研究对性是自由形状的曲线、曲面,CAGD的首要任务是建立曲线或曲面的数学模型,即利用直观有效的曲线曲面造型设计技术来对曲线曲面进行恰当的表示、清晰的显示和快速的处理。
自由曲线曲面通常用参数方程来表示,相应的曲线或曲面被称为参数曲线或参数曲面。
2 Bezier曲线的研究Bezier曲线是以“逼近”为基础, 先勾画折线多边形、然后用光滑的参数曲线去逼近这个折线多边形。
在计算机模拟的图形场景中, 为了细致地描绘出景物、物体的真实感, 需要采用能精确地建立物体特征的表示, 从而采用了多边形、二次曲面、分形结构、样条曲面和构造技术等实体表示方法。
其中为了构造齿轮、机冀、汽车等有曲面的结构而采用了样条 曲面并且使用了可以逼近很多插值节点的Bezier 曲线。
Bezier 曲线作为很好的曲线拟合工具, 因其具有保性, 可调控性等特点而被广泛应用于计算机辅助设计(CAD)及图像的绘制(Windows 操作系统的曲线就是Bezier 曲线实的)。
但在实际设计中存在两个问题, 首先由于Bezier 曲线控制点的性质, 根据已有数据所绘制的Bezier 曲线不一定能通过这些点, 造成大量的损耗。
其二, 初始点不一定能完全体现曲线的设计要求, 其中可能存在大量的无效点, 而对这些无效点的计算, 会导致计算维数的增加, 加大计算量。
Bezier 曲线的表达式为,0()()01n ii n i P t PB t t ==≤≤∑式中(0,1,,)i P i n = 为折线多边形的顶点。
,()i n B t 称伯恩斯坦基函数,()(1)i i n i i n n B t C t t -=-!(0,1,,)!()!i n n C i n i n i ==- Bezier 曲线有下列的性质:(1)断点插值:01(0),(1).P P P P ==(2)与首边和终边相切:''101(0)(),(1)().n n P n p p P n P P -=-=-(3)仿射不变性:即对任何仿射变换σ有,0()()().n ii n i P t P B t σσ==∑(4)凸包性: 即()P t 落在由控制多边形生成的凸包内.(5)变差减缩性:即任一条直线与()P t 的交点的个数都不超过该直线与控制多边形交点的个数.根据Bezier 曲线的定义确定的参数方程绘制Bezier 曲线, 因其计算量过大, 只适合计算机辅助绘图。
另一方面, 计算机绘制的曲线实际上是由计算出的很密的点连接而成, 而在工程研究中, 往往需要知道给定的t 值对应的Bezier 曲线上的点P(t)的准确位置。
3 B 样条曲线的研究早在1946年舍恩伯格(Schoenberg )提出了关于B-样条的理论,但是他的论文直到1967年才发表出来。
德布尔(De Boor )与考克斯(Cox )在1972年分别独立地给出了关于B-样条计算的标准算法。
戈登(Gordon )与里森费尔德(Riesenfeld,1974)在研究研究贝齐尔方法的基础上引入B-样条方法,使其成为CAGD 中的一个形状数学描述的基本方法。
B-样条方法保留了大部分的贝齐尔方法的优良性质,同时避免了贝齐尔曲线方法的缺点,关于曲线形状的局部控制的问题也得到了较好的解决,同时对曲线、曲面间的连接问题也利用参数连续性得到了基本解决。
B-样条曲线方程可以表示为,11(),,.n i k i k n i P t N P t t t n k +==≤≤≥∑ (1) 其中,31{}n i i P R =∈为控制顶点,1,01,,11,111()0()()()000i i i i i k i k i k i k i k i i k t i t t t N t t t t t N t N t N t t t t t +++-++++++⎧≤≤⎧=⎨⎪⎩⎪⎪--⎪=+⎨--⎪⎪=⎪⎪⎩其他规定 ,()i k N t 由两个下标,其中第一个下标i 表示基函数的序号,第二下标k 表示基函数的次数。
由这个公式我们可以看出,要确定第i 个k 次B-样条,()i k N t ,需要用到2k +个节点:11,,,.i i i k t t t +++ 那么我们把区间[]1,i i k t t ++叫做,()i k N t 的支撑区间。
支撑节点左端节点的下标就是,()i k N t 的第一个下标,也就是表示这个B-样条在参数t 轴上的位置。
相应的曲线方程中的1n +个控制顶点(0,1,,)i P i n = ,要用到1n +个k 次B-样条基函数,()(0,1,,)i k N t i n = ,定义这一组B-样条基的节点矢量011[,,,]n k U t t t ++= 是它们的支撑区间所含的节点的并集。
递推公式表明,k 次B-样条,()i k N t 可由两个1k -次B-样条,1()i k N t -与1,1()i k N t +-递推得到。
其线性组合的系数分别为i i k i t t t t +--与11i k i k t it t t t +++++--,其中,参数t 把第i 个k 次B-样条,()i k N t 的支撑区间[]1,i i k t t ++划分成两个部分的长度是两个系数是分子,两个1k -次B-样条的支撑区间的长度恰好是分母。
在重节点的情况下,递推公式右端两个凸线性组合的系数可能出现分子分母同时为零的情况,这是按规定该系数取为零。
1. B-样条有如下的性质:(1)递推性 由德布尔和考克斯的递推定义表明;(2)局部支撑性 1,0()0i i k i k t t t N t ++≥≤≤⎧⎨=⎩若其他,可以看出,非负性也包含在其中了;(3)可微性 在节点区间内部它是无限次可微的,在r 重节点处它是k r -次可微的,即是k r C -的;(4)规范性 ,() 1.i k i Nt =∑ 2. B-样条的局部性质区间1[,]i i k t t ++是k 次B-样条,()i k N t 的支撑区间,B-样条的次数k 不会影响到它的左端节点i t 的下标,但会影响右端节点1i k t ++的下标,也就是次数k 会影响到支撑区间包含的节点区间数(含零长度区间)。
k 次B-样条的支撑区间中包含了1k +个节点区间。
所以在参数t 轴上任意一个点1[,]i i t t t +∈处,就至多只有1k +个非零的B-样条,()(,1,,)j k N t j i k i k i =--+ ,其他k 次B-样条在该点处均为零。
考察式(1)表示的B-样条曲线定义的区间1[,]i i t t t +∈上那一曲线段,略去其中基函数取零值的那些项,则可表示为:,1()(),[,]i j j k i i j i k P t P N t t t t +--=∈∑从上式可以看出B-样条曲线的局部性质,也就是k 次B-样条曲线上定义域内参数为1[,]i i t t t +∈的一点()P t 不是和所有的顶点有关,而是至多与(,1,,)j P j i k i k i =--+ 这1k +个顶点有关。
除此之外,这个局部性质也表明,在曲线定义域内,控制顶点1,,,i k i k i P P P --+ 及相应的B-样条基函数决定了定义在非零节点区间1[,]i i t t t +∈上那一段k 次B-样条曲线段,与其余要素没有关系。
于是,往下标下降的方向错一个顶点,即11,,,i k i k i P P P ---- 那1k +个控制顶点就定义了1[,]i i u u -上的那一段曲线。