1孔斯曲面与双三次样条插值孔斯曲面与双三次样条插值20020099年年33月月CAD/CAMCAD/CAM技术基础技术基础上课内容上课内容一、主线概述二、三种构造孔斯曲面的方法(1)具有给定边界的孔斯曲面(2)具有给定边界及跨界斜率的孔斯曲面(3)具有给定边界及跨界斜率、跨界曲率的孔斯曲面三、三种定义曲面的基本方法四、双三次曲面片(采用“埃尔米特”基函数)五、双三次样条插值(拟合曲面的一种有效方法)六、弗格森曲面七、双三次样条曲面的参数化2一、主线概述一、主线概述曲面片的光滑拼接曲面片简单曲面片(由四个边界组成)具有给定边界及跨界斜率、跨界曲率的孔斯曲面双三次曲面片(弗格森三次曲面片)(用角点信息矩阵:角点信息+混合函数)不需要边界信息双三次样条插值(拚接成光滑曲面)双三次样条函数-双三次样条曲面c2连续弗格森曲面双三次样条插值所构造的参数样条曲面的特殊情况一、主线概述一、主线概述参数方程:2.回顾一下在曲面论中的概念曲面方程:3一、主线概述一、主线概述四个角点)1,1()0,1()1,0()0,0(rrrr四个边界U线上的切矢W线上的切矢),1(),0()1,()0,(wrwrururuwurwuru∂∂=),(),(边界曲线上的切矢)1,(),()0,(0uruwururuwu=∂∂=wwurwurw∂∂=),(),(),1(),(),0(0wrwwurwrwuw=∂∂=一、主线概述一、主线概述边界曲线上的法向(另一参数方向)偏导矢0(,)(,0)(,1)(0,)(1,)=∂=∂0000),()0,0(),()0,0(====∂∂=∂∂=wuwwuuuwurruwurr边界曲线的跨界斜率角点上的u向切矢或w向切矢4一、主线概述一、主线概述混合偏导矢(或扭矢)wuwurwuruw∂∂∂=),(),(2002),()0,0(==∂∂∂=wuuwwuwurr角点r(0,0)扭矢将给定的两个端点和端点斜率加权平均而产生一条曲线段将给定的两对边界及其跨界斜率“混合”起来生成一块曲面。一、主线概述一、主线概述)()()()(1010uGuGuFuF混合函数:在孔斯曲面的生成和表示中起着重要的作用规定:当混合函数在行矩阵中出现时,其自变量是u;在列矩阵中出现时,则以w为自变量。5方法:用混合函数与边界曲线混合而成。2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面目的:构造一块仅给定边界的曲面片混合函数:必须满足下列条件:边界曲线:2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面给定四条边界,如何构造曲面呢?给定四条边界,如何给定四条边界,如何构造曲面呢?构造曲面呢?6但是:给定的四条边界曲线(任何曲面给定四条边界),在构造曲面的时候,必须反应出另外两条边界的信息。因此从这个层面上讲,条件是充分条件。2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面构建步骤:其实给定任何方向的两条边界曲线,只要与相应的混合函数混合,就可构造满足条件的曲面片。(母线法、直纹面法)因此给定曲面片的四条边界来构造曲面片的步骤如下:Step1:构造仅给出两条边界的曲面片(用单变量算子对给定的一组曲线插值出曲面)Step2:构造另外两条边界的曲面片。Step3:为了包含给定四个边界的信息,将step1,step2加起来,构造第3张曲面(笛卡儿乘积法,用网格交点信息来定义)Step4:为最后得到给定四条边界的孔斯曲面片(布尔和法)2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面Step1:构造仅给出u向两条边界r(0,w),r(1,w)的曲面片,使用u向的混合函数注意:混合函数不是唯一的,只要满足(1-78)式就行72.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面Step2:构造另外两条边界w向r(u,0),r(u,1)的曲面片,使用w向的混合函数注意:混合函数不是唯一的,只要满足(1-78)式就行2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面Step3:如果构造具有给定边界的曲面片,显然r1+r2不是所求当w=0时r1+r2:当w=1时r1+r2:即:Step4:r1+r2-r3正是具有给定四条边界的曲面片82.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面r1+r2-r3用矩阵来表示:简单曲面片(或基本曲面):除了给出四条边界以外,再没有任何限制。从这个意义上说,简单曲面片是相当一般、相当灵活的一类曲面。只要给出一张曲线网格,就可构造一张由这种类型的曲面片组成的合成曲面。2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面小结小结小结321-rrrrGGGG+=92.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面为了发现孔斯曲面的规律,上述方程改写为:三阶方阵曲面片的边界信息方阵2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面分析跨界斜率和角点扭矢:对上式对w求偏导令w=0简单曲面片:注意:边界r(u,o)上任一点处的跨界斜率,等于这条边界的两个端点上的跨界斜率的线性组合,而同边界曲线r(u,0)本身的形状无关。性质性质性质102.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面分析跨界斜率和角点扭矢:类似地:上式两边对u求导:因此:简单曲面片的角点扭矢是零矢量。分别用u=0,u=1代入上式:functionhermit()%画出Hermit基函数closeall;u=linspace(0,1,20);F0=2*u.^3-3*u.^2+1;F1=-2*u.^3+3*u.^2;G0=u.*(u-1).^2;G1=u.^2.*(u-1);F0c=6*u.^2-6*u;%F0的一阶导数F1c=-6*u.^2+6*u;%F1的一阶导数G0c=3*u.^2-4*u+1;%G0的一阶导数G1c=3*u.^2-2*u;%G1的一阶导数subplot(121);plot(u,F0,'-r','LineWidth',2);title('埃尔米特基函数');holdall;plot(u,F1,'--r','LineWidth',2);plot(u,G0,'-b','LineWidth',2);plot(u,G1,'--b','LineWidth',2);subplot(122);plot(u,F0c,'-r','LineWidth',2);title('埃尔米特基函数的导数');holdall;plot(u,F1c,'--r','LineWidth',2);plot(u,G0c,'-b','LineWidth',2);plot(u,G1c,'--b','LineWidth',2);112.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面2.12.1具有给定边界的孔斯曲面具有给定边界的孔斯曲面分析简单曲面片之间的拼接:对于位置连续:r(1)(u,1)=r(2)(u,0)公共的边界r(1)(u,1)r(2)(u,0)对于跨界斜率:假设在公共边界的两端点上,两曲面片的两对边界分别相切,即切矢共线根据前面公式:得:这表明:只要上述假设成立,则两曲面片在公共边界上各点(端点)的跨界切矢共线,这就保证两块曲面片在公共边界的每一点上有公共的切平面。122.22.2具有给定边界及跨界斜率的孔斯曲面具有给定边界及跨界斜率的孔斯曲面用途背景:简单曲面片有其本身固有的跨界斜率,设计曲面时,常需在已有的曲面片上进行拼接,为了保证其拼接后曲面的光滑性,必须进行具有给定边界及跨界斜率的曲面片构造具有给定边界及跨界斜率的曲面片构造已知条件:引入混合函数F0、F1、G0、G1:2.22.2具有给定边界及跨界斜率的孔斯曲面具有给定边界及跨界斜率的孔斯曲面先构造这样一张曲面片,使它以r(0,w)与r(1,w)为边界,并以ru(0,w)与ru(1,w)为两条边界上的跨界斜率。类比:三次样条曲线,弗格森曲线段、广义的埃尔米特插值[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡='1'0101010)()()()()(yyyyuGuGuFuFuy同样的另一对边界,曲面片表示为:132.22.2具有给定边界及跨界斜率的孔斯曲面具有给定边界及跨界斜率的孔斯曲面r1+r2不是原始问题的解答,必须从中减去r3。用角点信息来构造r3。r1+r2-r3是原始问题所求。2.22.2具有给定边界及跨界斜率的孔斯曲面具有给定边界及跨界斜率的孔斯曲面改写成五阶方阵的形式:曲面边界信息方阵边界及其跨界斜率角点的位置矢量、切矢和扭矢142.32.3具有给定边界及跨界斜率、曲率具有给定边界及跨界斜率、曲率曲面边界信息方阵边界信息角点信息用途背景:简单曲面片不仅有其本身固有的跨界斜率,而且具有自己固有的跨界二阶导矢(孔斯近似称之为跨界曲率)。因此,构造曲面时要匹配跨界斜率、曲率。跨界斜率、曲率。增加一对混合函数三、三种定义曲面的基本方法三、三种定义曲面的基本方法(1)笛卡儿乘积法:(2)母线法(3)布尔和法15三、三种定义曲面的基本方法三、三种定义曲面的基本方法(1)笛卡儿乘积法:由于所采用的单变量算子的类型不同,用这种方法可构造多种笛卡儿乘积曲面,既包括后述的双三次曲面(1-100),也包括后面要介绍的贝齐埃曲面和B样条曲面。其中所用的常值数据可以是角点信息,也可以是顶点信息。这种方法用得较普遍。三、三种定义曲面的基本方法三、三种定义曲面的基本方法(2)母线法:母线法就是用单变量算子对给出的一组曲线插值出曲面来。因此,母线曲面是用u向或w向的单变量数据(如一组或另一组网格曲线)来定义的。笛卡儿乘积曲面是母线曲面的一种特例。一般说来,因为母线曲面是用曲线定义的,与定义笛卡儿乘积曲面所用的离散数据比较起来,前者要用较多的几何信息。用一组平面截线来描述曲面16三、三种定义曲面的基本方法三、三种定义曲面的基本方法(3)布尔和法:r1+r2-r3它是用u向和w向的单变量数据(即两个方向的网格曲线和跨界斜率等边界信息)来定义的,所以它包括作为特例的沿任一方向的母线法。但构造布尔和曲面不能简单地把两张母线曲面相加,因为母线法用了一组或另一组网格曲线上的数据,它包括了网格点上的所有数据。如果简单地把两张母线曲面相加,就会把相交的网络点数据算上两次。因此表示为:这反映了用布尔和构造孔斯曲面的实质及三种曲面定义方法之间的内在联系三、三种定义曲面的基本方法三、三种定义曲面的基本方法例题:给定曲面片的四条边界r(0,w)r(1,w)r(u,0)r(u,1),现要在两条u向边界之间进行线性插值,在w向边界之间均进行三次插值,即构造1×3次(2×4阶)曲面片,试用Coons的方法构造具有上述给定边界而无其它要求的曲面片,要求在曲面片表达式中具体写出满足要求的u向和w向的混合函数,并依此说明布尔和曲面、母线曲面、笛卡儿乘积曲面三者之间的关系。参考书本p46-p4717四、双三次曲面片(采用四、双三次曲面片(采用““埃尔米特埃尔米特””基函数)基函数)孔斯曲面的精彩之处:推广到满足任何高阶边界条件的曲面上去。但是,往往无法提供这么多的边界信息。办法:将边界信息(边界曲线和跨界斜率)用角点信息和混合函数来定义。构造规律:对曲面片满足边界条件的要求提高一阶,曲面方程中的边界信息方阵就要扩大二阶,并且要多用一对混合函数;边界信息方阵的第一行与第一列包含着全部边界信息;余下的子方阵则包含着角点信息;从边界信息方阵的分块中也可以很明显地看出方阵中元素的分布规律。认识了这些规律之后,就能容易地构造出满足更高阶边界条件的孔斯曲面方程。四、双三次曲面片(采用四、双三次曲面片(采用““埃尔米特埃尔米特””基函数)基函数)用上述混合函数,仿照带一阶导数的插值公式,可将边界曲线和跨界斜率写为:曲面片r1+r2-r3为:18四、双三次曲面片(采用四、双三次曲面片(采用““埃尔米特埃尔米特””基函数)基函数)曲面片r1+r2-r3简化为:(1-l00)这样的曲面片(称为张量积或笛卡儿乘积曲面片),关键在于这两种方法都是用角点信息和混合函数来定义边界信息;而且在定义边界信息和构造曲面时采用了