曲线、曲面基础理论1、认识曲线与曲面2、曲面造型的发展历程3、曲线曲面的参数表达4、Bezier曲线与曲面5、B样条曲线与曲面6、NURBS曲线与曲面7、曲面的其它表达8、曲面求交算法9、CAD系统中的曲面造型方法工业产品的形状大致可分为两类:第一类是仅由初等解析曲面(例如平面、圆柱面、圆锥面、球面、圆环面等)组成,大多数机械零件属于这一类,可以用画法几何与机械制图的方法完全清楚表达和传递所包含的全部形状信息。第二类是不能由初等解析曲面组成,而以复杂方式自由变化的曲线曲面即所谓自由型曲线曲面组成,例如飞机、汽车、船舶的外形零件。这一类形状单纯用画法几何与机械制图是不能表达清楚的。自由曲线和曲面因不能由画法几何与机械制图方法表达清楚,成为工程师们首要解决的问题。人们一直在寻求用数学方法唯一定义自由曲线和曲面的形状。曲线、曲面基础理论1、认识曲线与曲面2、曲面造型的发展历程3、曲线曲面的参数表达4、Bezier曲线与曲面5、B样条曲线与曲面6、NURBS曲线与曲面7、曲面的其它表达8、曲面求交算法9、CAD系统中的曲面造型方法曲面造型(SurfaceModeling)是计算机辅助几何设计(ComputerAidedGeometricDesign,CAGD)和计算机图形学的一项重要内容,主要研究在计算机图象系统的环境下对曲线曲面的表示、设计、显示和分析。它起源于汽车、飞机、船舶、叶轮等的外形放样工艺,由Coons、Bezier等大师于二十世纪六十年代奠定其理论基础。经过四十多年的发展,曲面造型现在已形成了以有理B样条曲面(RationalB-splineSurface)为基础的参数化特征设计和隐式代数曲面(ImplicitAlgebraicSurface)表示这两类方法为主体,以插值(Interpolation)、逼近(Approximation)这二种手段为骨架的几何理论体系。曲线曲面发展历程•1963年美国波音飞机公司的佛格森(Ferguson)最早引入参数三次曲线,将曲线曲面表示成参数矢量函数形式,构造了组合曲线和由四角点的位置矢量、两个方向的切矢定义的佛格森双三次曲面片。图Ferguson曲面Q00uvQ01Q10Q11图Ferguson曲面Q00uvQ01Q10Q11Note:C1continuous,“planarpot”•1964年,美国麻省理工学院的孔斯(Coons)用封闭曲线的四条边界定义一张曲面。同年,舍恩伯格(Schoenberg)提出了参数样条曲线、曲面的形式。Note:C2continuous,Flexibleshapecontrol•1971年,法国雷诺(Renault)汽车公司的贝塞尔(Bezier)发表了一种用控制多边形定义曲线和曲面的方法。Note:C2continuous,Moreflexibleshapecontrolwithseveralcontrolpoints.•1974年,美国通用汽车公司的戈登(Gorden)和里森费尔德(Riesenfeld)将B样条理论用于形状描述,提出了B样条曲线和曲面。nikiiuNu0,)()(PC00/00)()()()()(01)(111,111,,10,kttuNutttuNtuuNtutuNikikikiikikiikiiii其它若u10101010101010Ni+3,3(u)Ni,3(u)Ni+1,3(u)Ni+2,3(u)titi+3ti+1ti+2ti+4ti+5ti+6ti+7•1975年,美国锡拉丘兹(Syracuse)大学的佛斯普里尔(Versprill)提出了有理B样条方法。•80年代后期皮格尔(Piegl)和蒂勒(Tiller)将有理B样条发展成非均匀有理B样条(NURBS)方法,并已成为当前自由曲线和曲面描述的最广为流行的技术。00/00)()()()()(01)(111,111,,10,kttuNutttuNtuuNtutuNikikikiikikiikiiii其它若minjjiminjjijidp0000)()()()()(vNuNvNuNvu,lj,ki,,lj,ki,,,•非均匀有理B样条(NURBS)成为当前大多数商用CAD软件系统的内部表达技术。SolidEdgeCATIAUGNXPro/EInventor曲线、曲面基础理论1、认识曲线与曲面2、曲面造型的发展历程3、曲线曲面的参数表达4、Bezier曲线与曲面5、B样条曲线与曲面6、NURBS曲线与曲面7、曲面的其它表达8、曲面求交算法9、CAD系统中的曲面造型方法解析曲面(代数曲面)代数曲面在造型系统中常见,但远远不能满足复杂曲面造型的要求•适合构造简单曲面,不能构造自由曲面•不同类型曲面拼接连续性难以保证•不同曲面求交公式不一,程序实现量大•工程设计交互性差因此,CAD系统中除简单代数曲面外,必须具有强大的自由曲面造型能力Bezier、B样条、BURBS曲面在商用CAD系统中常见。曲线曲面的参数表示非参数表示有显式和隐式之分显式表示:如曲面方程z=f(x,y),式中每个z值对应唯一的x、y值,该表示计算非常方便,但无法描述多值或封闭面,如球。隐式表示:如曲面f(x,y,z)=0,这种表示不便于由已知的参量x,y计算z值-1=0曲线参数表示空间曲线上一点p的每个坐标被表示成参数u的函数:x=x(u),y=y(u),z=z(u)。合起来,曲线被表示为参数u的矢函数:p(u)=[xyz]=[x(u)y(u)z(u)]最简单的参数曲线是直线段,端点为P1、P2的直线段参数方程可表示为:P(t)=P1+(P2-P1)tt∈[0,1];参数表示优点•易于满足几何不变性的要求,可以对参数方程直接进行几何变换,节省计算量。曲线曲面表示的几何不变性是指它们不依赖于坐标系的选择或者说在旋转和平移变换下不变的性质•有更大的自由度来控制曲线、曲面的形状。例如:一条二维三次曲线的显式表示为:只有四个系数控制曲线的形状。而采用二维三次曲线的参数表达式为:则有8个系数可用来控制此曲线的形状。dcxbxaxy23]1,0[tbtbtbtbatatata)t(P432231432231•易于规定曲线、曲面的范围。•易于处理多值问题和斜率无穷大的情形。•易于计算曲线、曲面上的点。而隐式方程需求解非线性或超越方程,另外,求导、等距的计算也被简化;•参数方程中,代数、几何相关和无关的变量是完全分离的,而且对变量个数不限,从而便于用户把低维空间中曲线、曲面扩展到高维空间去。这种变量分离的特点使我们可以用数学公式处理几何分量。有关基本概念介绍)(uppParametriccurveTangentBinormalNormalCurvaturepptppppbtbnNote:Firstderivativemaynotbeperpendiculartothesecondderivativetb3pppbP(u)P〞(u)插值:给定一组有序的数据点Pi,i=0,1,…,n,构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值,所构造的曲线称为插值曲线。常用插值方法有线性插值、抛物线插值等。逼近:构造一条曲线使之在某种意义下最接近给定的数据点,称为对这些数据点进行逼近,所构造的曲线为逼近曲线。拟合:插值和逼近则统称为拟合(fitting)。有关基本概念介绍曲线、曲面基础理论1、认识曲线与曲面2、曲面造型的发展历程3、曲线曲面的参数表达4、Bezier曲线与曲面5、B样条曲线与曲面6、NURBS曲线与曲面7、曲面的其它表达8、曲面求交算法9、CAD系统中的曲面造型方法Bezier曲线给定空间n+1个点的位置矢量Pi(i=0,1,2,…,n),则Bezier参数曲线上各点坐标的插值公式是:其中,Pi构成该Bezier曲线的特征多边形,Bi,n(t)是n次Bernstein基函数,也称为调和函数:t[0,1]Bernstein基函数的性质1)正性2)端点性质3)权性4)对称性5)递推特性其计算过程表示为:高次Bernstein基函数可由两个低一次的Bernstein调和函数线性组合而成)1()(,,tBtBninni)()1()1(1)1()1(,)(,tBttCttCtBniiniininnininnnin三次Bezier曲线例如,由P0、P1、P2、P3四个控制点构成的控制多边形来构造33,323,223,133,0i3ii33,iuuBu13uuBu13uuBu1uB3,2,1,0iu1uCuB则三次Bezier曲线表示为:UMPPPPP00010033036313311uuuPPPPuBuBuBuBuBPuP321023T32103,33,23,13,03,i30ii此时调和函数为:上式展开表示为:Bezier曲线性质1)端点性质曲线过控制顶点的首末顶点。将u=0和1分别代入表达式p(u)中可知p(0)=P0,p(1)=Pn对于三次Bezier曲线,p(1)=P3。如图为三次Bezier曲线:2)切矢性质曲线在首末两点相切于多边形的起、止边。对三次Bezier曲线求一阶导数:2301PP31p,PP30p0p1p即:P’(0)=n(P1-P0),P’(1)=n(Pn-Pn-1)4)凸包性即Bezier曲线不会越出特征多边形的顶点所围成的凸包3)对称性将控制顶点反序仍可得到同样形状的曲线。Q0Q1Q2Q3Q0Q1Q2Q3三次Bezier曲线示例三次Bezier曲线的计算及绘制在参数空间t∈[0,1]进行均匀插值,计算对应的坐标点,然后连接成线,这条线就是折线逼近的Bezier曲线32103210210100321032102101003322103322103322120333221203y3y3yyB3y6y3yB3y3yByBx3x3xxA3x6x3xA3x3xAxAtBtBtBBtytAtAtAAtxytyt13tyt13tyt1tyxtxt13txt13txt1tx其中写成编程实现:也可写成矩阵表达式,式中若求PX(t)的值,则取Pi的x坐标进行计算,同理求Py(t)、Pz(t)的值,具体如下:Px(t)=[B0,3(t)B1,3(t)B2,3(t)B3,3(t)][P0xP1xP2xP3x]TPy(t)=[B0,3(t)B1,3(t)B2,3(t)B3,3(t)][P0yP1yP2yP3y]TPz(t)=[B0,3(t)B1,3(t)B2,3(t)B3,3(t)][P0zP1zP2zP3z]T注意:上式基函数的计算仅需一次,不必三次。Bezier曲线的绘制:例如利用上面的计算方法可分别求出t=0.0,0.05,0.10,0.15,……,0.95,1.0时的曲线上的点,依次连接相邻两点为直线段,即可得近似的曲线图形。Bezier曲线几何作图与分割特性,给定参数t(t[0,1]),就把定义域[0,1]分成长度为t:(1-t)的两段。依次对原始控制多边形每一边执行同样的定比分割,所得分点就是第一级递推生成的中间顶点,对这些中间顶点构成的控制多边形再执行同样的定比分割,得第二级中间顶点。重复进行下去,直到n级递推得到一个中间顶点P0n即为所求曲线上的点P(t)。例如:对三次Bezier曲线(给定参数域t[0,1])上t=1/3的点。把定义