Bezier曲面与B样条曲面.pptx

上传人:莉*** 文档编号:73645966 上传时间:2023-02-21 格式:PPTX 页数:75 大小:1.20MB
返回 下载 相关 举报
Bezier曲面与B样条曲面.pptx_第1页
第1页 / 共75页
Bezier曲面与B样条曲面.pptx_第2页
第2页 / 共75页
点击查看更多>>
资源描述

《Bezier曲面与B样条曲面.pptx》由会员分享,可在线阅读,更多相关《Bezier曲面与B样条曲面.pptx(75页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、20 二月 20231 曲面和曲线一样,是计算机图形学中研究的重要内容之一,它们在实际工作中有着广泛的应用。在工程应用中,常用的自由曲面有很多,例如:Bezier曲面、B样条曲面、Coons曲面等。在计算机出现之前以及在计算几何没有很好地发展之前,对于一些工程实际中应用的复杂自由曲面,如飞机、轮船、汽车等几何外形的描述以及地形形状的表示,传统的处理办法是用一组或几组平行平面去截这个曲面,画出几组截交线来表示这个曲面。例如:船体就是用相互正交的三组平面截得的纵剖线、横剖线和水平线表示的;曲线与曲面的生成与计算第1页/共75页20 二月 20232又例如:地面则是用一组水平面截得一组等高线表示的,

2、这实际上是把曲面问题转化为曲线问题。这种处理办法称为曲线网格表示法,正是利用这些曲线网格来近似地表示自由曲面。如下所示:第2页/共75页20 二月 20233因此,在产生一张曲面时,我们可以利用一系列的纵横交错且相互平行的样条曲线来构造曲面,如下图所示。图 曲面的网格注:那么我们如何确定这张曲面上任意一点的位置呢?1.若这点恰好落在某一条网格线上,如右图中的A点,则就可以根据这条网格线的函数表示来计算这一点的位置(坐标);2.若这点不在任何网格线上,如右图中的B点,则无法计算该点的精确位置,只能用离该点最近的一条网格线上的点来近似表示。第3页/共75页20 二月 20234 对于不在网格上的点

3、,若用离该点最近的一条网格线上的一点来近似表示,这会使得本来精度不很高的近似曲面在这一点的精度更低,所以用这种方法来产生曲面只能适合一部分精度不很高的场合。我们可以把平面里自由曲线生成方法加以推广到曲面的生成问题上,借助于曲面的解析表达式来处理有关曲面问题。曲面的种类繁多,为了便于讨论,将曲面分为两类:一类是规则曲面,如柱、锥、椭球、环、双曲面、抛物面等,它可用参数方程解析地描述;另一类是不规则曲面,如Coons曲面、Bezier曲面、B样条曲面等,这是构造某种曲面的方程问题。本节我们主要讨论Bezier曲面、B样条曲面的生成与计算。第4页/共75页20 二月 20235 在计算机绘图中常用参

4、数形式表示曲面,自由曲面由曲面片拼接而成,而曲面片又是由曲线构成,如下图所示:5.3 曲面的参数表示图 曲面片第5页/共75页20 二月 20236 三维空间任意曲面的图形如左图所示,曲面有两族参数曲线,或称为坐标曲线,通常简称u线和v线。图-参数曲面5.3 曲面的参数表示曲面的参数表示第6页/共75页20 二月 20237v当 时,代入式子得:上式则是曲面上另一条参数曲线 ,即一条u线。当 时,代入式子得:上式是曲面上一条参数曲线 ,即一条v线。图-参数曲面即参数u为定值的曲面上的线。即参数v为定值的曲面上的线。5.3 曲面的参数表示曲面的参数表示第7页/共75页20 二月 20238上述两

5、条参数曲线 和 的交点则是 。事实上,用 代入式子图-参数曲面n也得到曲面上同一点位置矢量 ,即:5.3 曲面的参数表示曲面的参数表示第8页/共75页20 二月 20239例如:如下图的平面片方程为:平面片v上式中矢量 为平面上一点的位置矢量,和 为常矢量,且 不平行于 ,该平面片是由矢量 和 张成的四边形。eg:当u=1/3,v=1/2时对应平面片中一点:r(1/3,1/2)=r0+a/3+b/25.3 曲面的参数表示曲面的参数表示第9页/共75页20 二月 202310又如下图所示,以固定方向长度为 的直线段作为母线沿给定一条空间曲线移动生成一个柱面,其方程为:上式中 是沿母线方向的常矢量

6、。柱 面直线段空间曲线5.3 曲面的参数表示曲面的参数表示第10页/共75页20 二月 202311 如前所述,Bezier曲线是一条与控制多边形顶点位置有严格关联关系的曲线,Bezier曲线形状趋向于特征多边形的形状,而且阶数由控制多边形顶点的个数决定。Bezier曲 面 是 由 Bezier曲 线 拓 广 而 来,它 也 是 以Bernstein函数作为基函数,是由Bernstein基函数构造空间点阵列的位置来控制的。Bezier曲线是由特征多边形控制的;Bezier曲面则是由特征网格顶点控制的。二者在表达式上也十分相似。5.4 Bezier、B样条曲面的生成下面主要介绍工程上流行应用的B

7、ezier曲面和B样条曲面一、Bezier(贝塞尔)曲面5.4 Bezier、B样条曲面的生成样条曲面的生成第11页/共75页20 二月 202312(1)Bezier曲面的定义 在三维空间中,给定(n+1)X(m+1)个空间点 Pij (i=0,1,n;j=0,1,m),称nXm次参数曲面:为nm次Bezier曲面。是 的控制顶点,和 为Bernstein 基函数,具体表示为:5.4 Bezier、B样条曲面的生成样条曲面的生成第12页/共75页20 二月 202313如果用一系列直线段将相邻的点 和 一一连接起来组成一张空间网格,称这张网格为nXm次曲面特征网格。如下图所示为3X3次曲面特

8、征网格。图 Bezier曲面特征网格 类似于Bezier曲线情况,特征网格框定了Bezier曲面P(u,v)的大致形状;Bezier曲面P(u,v)是对特征网格的逼近。注:实际应用Bezier曲面时,m和n不宜过大,一般为不大于4,否则特征网格对曲面的控制会减弱。5.4 Bezier、B样条曲面的生成样条曲面的生成第13页/共75页20 二月 202314Bezier曲面的矩阵表示形式为:5.4 Bezier、B样条曲面的生成样条曲面的生成第14页/共75页20 二月 202315Bezier曲面有类似于Bezier曲线的性质。(2)Bezier曲面的性质 v性质1:端点位置由于说明 是曲面的

9、四个端点,如左图所示的3X 3次曲面的4个端点。图 Bezier曲面端点的切平面和边界5.4 Bezier、B样条曲面的生成样条曲面的生成第15页/共75页20 二月 202316v性质2:边界线位置Bezier曲面的四条边界线分别是以为控制多边形的Bezier曲线。图 Bezier曲面端点的切平面和边界即:Bezier曲面特征网格最外一圈顶点定义Bezier曲面的四条边界5.4 Bezier、B样条曲面的生成样条曲面的生成第16页/共75页20 二月 202317图 Bezier曲面端点的切平面和边界v性质3:端点的切平面由计算可知,三角 中打上斜线的三角形)所在的平面分别在点5.4 Bez

10、ier、B样条曲面的生成样条曲面的生成第17页/共75页20 二月 202318v性质4:凸包性曲面P(u,v)位于其控制顶点Pij(i=0,1,2,n;j=0,1,2,m)的凸包内。如下图所示:图 Bezier曲面的凸包性5.4 Bezier、B样条曲面的生成样条曲面的生成第18页/共75页20 二月 202319v性质5:几何不变性曲面P(u,v)的形状和位置与坐标系选择无关,仅仅和点 位置有关。(3)几个低次Bezier曲面 由Bezier曲面的定义我们可以推出一次、二次以及三次Bezier曲面的数学表达式,工程上应用较多的是三次Bezier曲面。下面依次讨论:5.4 Bezier、B样

11、条曲面的生成样条曲面的生成第19页/共75页20 二月 202320v1)双一次Bezier曲面当n=m=1时,为双一次Bezier曲面,给定(n+1)X(m+1)=2X2=4个控制点:P00、P01、P10、P11,则5.4 Bezier、B样条曲面的生成样条曲面的生成第20页/共75页20 二月 202321v其图形表示如左图所示,可以证明它是一个双曲抛物面(马鞍面)上的一块曲面片。当u=0和u=1时,代入上式得到的两条边界为直线段;当v=0和v=1时,得到的两条边界也为直线段。所以双一次Bezier曲面由四条直线段包围而成。所以有:图 双一次Bezier曲面u=0u=1v=0v=15.4

12、 Bezier、B样条曲面的生成样条曲面的生成第21页/共75页20 二月 202322v2)双二次Bezier曲面当n=m=2时,为双二次Bezier曲面,给定(n+1)X(m+1)=3X3=9个控制点:P00、P01、P02、P10、P11、P12、P20、P21、P22,则5.4 Bezier、B样条曲面的生成样条曲面的生成第22页/共75页20 二月 202323所以有:从而5.4 Bezier、B样条曲面的生成样条曲面的生成第23页/共75页20 二月 202324图 双二次Bezier曲面v其图形表示如左图所示,可以知道:当u取定值时,是关于v的二次参数曲线;同样,当v取定值时,是

13、关于u的二次参数曲线;注:P00、P02、P20、P22 是曲面上的四个端点5.4 Bezier、B样条曲面的生成样条曲面的生成第24页/共75页20 二月 202325 当u=0和u=1时,代入上式得到的两条边界为抛物线段;当v=0和v=1时,另外两条边界也为抛物线段。所以双二次Bezier曲面由4条抛物线段包围而成,如左图所示。显然,中间的一个顶点的变化对边界曲线不产生影响,这意味着在周边8点不变的情况下,适当调整点P11就可以控制曲面形状(凹凸性)。5.4 Bezier、B样条曲面的生成样条曲面的生成图 双二次Bezier曲面第25页/共75页20 二月 202326v3)双三次Bezi

14、er曲面当n=m=3时,为双三次Bezier曲面,给(n+1)X(m+1)=4X4=16个控制点:Pij(i=0,1,2,3,j=0,1,2,3),则5.4 Bezier、B样条曲面的生成样条曲面的生成第26页/共75页20 二月 202327所以有:从而5.4 Bezier、B样条曲面的生成样条曲面的生成第27页/共75页20 二月 2023285.4 Bezier、B样条曲面的生成样条曲面的生成第28页/共75页20 二月 2023295.4 Bezier、B样条曲面的生成样条曲面的生成第29页/共75页20 二月 202330图 双三次Bezier曲面v双三次Bezier曲面片的图形如左

15、图所示。1.矩阵表示双三次Bezier曲面片特征多面体个控制顶点的位置向量。显然这个控制点中只有个顶点P00、P03、P30和P33位于Bezier曲面上。5.4 Bezier、B样条曲面的生成样条曲面的生成第30页/共75页20 二月 202331 2.矩阵中周围的2个控制点定义了4条三次Bezier曲线,即边界曲线。其余的4个点P11、P21、P12和P22与边界曲线无关,但影响曲面片的形状,即适当调整这个点就可以控制曲面形状(凹凸性)。图 双三次Bezier曲面5.4 Bezier、B样条曲面的生成样条曲面的生成第31页/共75页20 二月 202332(4)绘制Bezier曲面及生成程

16、序 例:上机编程绘制一三次Bezier曲面,并输出其运行结果。1.根据如下公式,编程绘制Bezier曲面。5.4 Bezier、B样条曲面的生成样条曲面的生成第32页/共75页20 二月 2023332.参考程序为:#define n 15main()int px,py,pz,i,j;int xn+1n+1,yn+1n+1,x044,y044,z044;float a4,c4,u,v,delta;void draw();定义画ezier曲面的子函数 void input();定义输入个控制顶点坐标的子函数 input(x0,y0,z0);5.4 Bezier、B样条曲面的生成样条曲面的生成第3

17、3页/共75页20 二月 202334delta=1.0/n;参数u、v对区间0,1的分割精度 for(j=0;j=n;j+=1)v=delta*j;c0=(1-v)*(1-v)*(1-v);c1=3*v*(1-v)*(1-v);c2=3*v*v*(1-v);c3=v*v*v;for(i=0;i=n;i+=1)u=delta*i;a0=(1-u)*(1-u)*(1-u);a1=3*u*(1-u)*(1-u);a2=3*u*u*(1-u);a3=u*u*u5.4 Bezier、B样条曲面的生成样条曲面的生成第34页/共75页20 二月 202335px=mutipul(a,x0,c);py=mu

18、tipul(a,y0,c);pz=mutipul(a,z0,c);xij=(py*0.7071-px*0.7071+200)*2-300;yij=(py*0.4082-pz*0.8165+px*0.4082+200)*2-300;printf(output the xij:n);for(j=0;j=n;j+=1)for(i=0;i=n;i+=1)printf(x=%dt,xij);注:因为屏幕显示器是一二维平面区域。所以在二维平面里画Bezier曲面三维立体图,应将三维空间立体坐标按某种变换转化为二维平面区域坐标。5.4 Bezier、B样条曲面的生成样条曲面的生成第35页/共75页20 二月

19、 202336printf(n);getch();printf(output the yij:n);for(j=0;j=n;j+=1)for(i=0;i=n;i+=1)printf(y=%dt,yij);printf(n);getch();draw(x,y);根据点坐标,画三次ezier曲面 getch();closegraph();注意:输出三次ezier曲面上共(n+1)X(n+1)个点的,坐标值5.4 Bezier、B样条曲面的生成样条曲面的生成第36页/共75页20 二月 202337/*-1:计算曲面上点(u,v)的值-*/int mutipul(a,b,c)float a4,c4;

20、int b44;int d4,p,i,j,t;for(j=0;j=3;j+=1)dj=0;for(i=0;i=3;i+=1)t=ai*bij;dj=dj+t;p=0;for(i=0;i=3;i+=1)t=di*ci;p=p+t;return p;例如:px=mutipul(a,x0,c);5.4 Bezier、B样条曲面的生成样条曲面的生成第37页/共75页20 二月 202338/*-2:定义画ezier曲面的子函数-*/void draw(x,y)int xn+1n+1,yn+1n+1;int i,j;int gdriver=DETECT,gmode;initgraph(&gdriver,

21、&gmode,D:TC);setbkcolor(0);cleardevice();setcolor(15);printf(“Bezier curved surfacent);for(j=0;j=n;j+=1)for(i=0;i=n-1;i+=1)5.4 Bezier、B样条曲面的生成样条曲面的生成第38页/共75页20 二月 202339 moveto(xij,yij);lineto(xi+1j,yi+1j);for(i=0;i=n;i+=1)for(j=0;j=n-1;j+=1)moveto(xij,yij);lineto(xij+1,yij+1);注:根据曲面上点的坐标,用画直线的函数li

22、neto连接曲面上相邻的两点,从而生成ezier曲面。5.4 Bezier、B样条曲面的生成样条曲面的生成第39页/共75页20 二月 202340/*-3:定义输入个控制顶点坐标的函数-*/void input(x0,y0,z0)int x044,y044,z044;int i,j;int x16=20,40,65,180,44,56,107,129,60,65,107,141,15,34,75,105;int y16=45,190,247,140,65,185,186,115,30,198,230,135,80,220,285,170;int z16=40,40,40,40,30,30,3

23、0,30,20,20,20,20,0,0,0,0;5.4 Bezier、B样条曲面的生成样条曲面的生成第40页/共75页20 二月 202341for(i=0;i=3;i+)for(j=0;j=3;j+)x0ij=xi+j;for(i=0;i=3;i+)for(j=0;j=3;j+)y0ij=yi+j;for(i=0;i=3;i+)for(j=0;j=3;j+)z0ij=zi+j;注意:个控制顶点ij(i,j=0,1,2,3)的三个分量坐标分别存放在x0,y0,z0三个二维数组中。5.4 Bezier、B样条曲面的生成样条曲面的生成第41页/共75页20 二月 2023423.运行结果:绘制一

24、三次Bezier曲面如下图所示。图-三次Bezier曲面5.4 Bezier、B样条曲面的生成样条曲面的生成第42页/共75页20 二月 202343(5)Bezier曲面的拼接 单个Bezier曲面可以通过以下两步生成:()固定v,随着u变化可得一簇Bezier曲线;()固定u,随着v变化可得一簇Bezier曲线;图 参数曲面Bezier曲面是由Bezier曲线交织而成的曲面。5.4 Bezier、B样条曲面的生成样条曲面的生成第43页/共75页20 二月 202344然而一个复杂的曲面往往不能用单一的Bezier曲面来实现,而要用几块Bezier曲面拼接起来。下面我们简单讨论两张双三次Be

25、zier曲面的拼接。v如右图所示,图中给出了两个相邻的Bezier曲面片,分别给命名为P(u,v)Q(u,v)。图两个相邻的Bezier曲面片5.4 Bezier、B样条曲面的生成样条曲面的生成第44页/共75页20 二月 202345v 如果对中所有的v,若有 就可以得到跨界位置处曲面函数的连续性这也就意味着:两曲面片间的一个公共边界需要两个特征多边形之间的一个共同边界多边形。图两个相邻的Bezier曲面片5.4 Bezier、B样条曲面的生成样条曲面的生成第45页/共75页20 二月 202346v 如下图所示。图中 v 即表示两个曲面相接处共用的多边形边界。图 Bezier曲面片间位置P

26、(u,v)Q(u,v)5.4 Bezier、B样条曲面的生成样条曲面的生成第46页/共75页20 二月 202347 要使得跨界处一阶导数连续,即曲面在跨界处光滑,对中的所有v,曲面片(1)在u=1的切平面必须与曲面片(2)在u=0的切平面重合,如下图所示,即边界处切平面重合。图 Bezier曲面片间位置P(u,v)Q(u,v)注:对于这一点的讨论比较复杂,可以参阅有关文件,这里我们不作重点叙述。下面仅讨论实现一阶导数连续的条件。5.4 Bezier、B样条曲面的生成样条曲面的生成第47页/共75页20 二月 202348 图-Bezier曲面片的拼接P(u,v)Q(u,v)当两个双三次Bez

27、ier曲面拼接时,根据曲线的端点性质,可得实现一阶导数连续的条件为:1.2.即要求两曲面片在边界线处的控制点重合,且重合点处的左右控制点(共三点)在一条直线上,如左图所示。下面仅讨论实现一阶导数 连续的条件。讨论5.4 Bezier、B样条曲面的生成样条曲面的生成第48页/共75页20 二月 202349二、B样条曲面 与如前所述的Bezier曲面的情况相类似,B样条曲面也是B样条曲线的推广。因此,构造B样条曲面的方法与构造Bezier曲面的方法类似,也可以通过一个特征多边形网格顶点来定义,只是基函数采用了B样条基函数。(1)B样条曲面的定义 在三维空间中,给定(n+1)X(m+1)个空间点P

28、ij(i=0,1,n;j=0,1,m),称nXm次参数曲面:为nXm次B样条曲面。5.4 Bezier、B样条曲面的生成样条曲面的生成第49页/共75页20 二月 202350 其中:是 的控制顶点,和 为B样条基函数,具体表示为:5.4 Bezier、B样条曲面的生成样条曲面的生成第50页/共75页20 二月 202351如果用一系列直线段将相邻的点 和 一一连接起来组成一张空间网格,称这张网格为nXm次B样条曲面特征网格。如下图所示为3X3次B样条曲面特征网格。图-B样条曲面特征网格 类似于B样条曲线情况,特征网格框定了B样条曲面P(u,v)的大致形状;B样条曲面P(u,v)是对特征网格的

29、逼近。注:同样,实际应用B样条曲面时,m和n不宜过大,一般为不大于4,否则特征网格对曲面的控制会减弱。5.4 Bezier、B样条曲面的生成样条曲面的生成第51页/共75页20 二月 202352(2)几个低次B样条曲面 v1)双一次B样条曲面当n=m=1时,为双一次B样条曲面,给定(n+1)X(m+1)=2X 2=4个控制点:P00、P01、P10、P11,则5.4 Bezier、B样条曲面的生成样条曲面的生成第52页/共75页20 二月 202353所以有双一次B样条曲面为:图 双一次B样条曲面u=0u=1v=0v=1v如左图所示,与双一次Bezier曲面一样,双一次B样条曲面也是双曲抛物

30、面(马鞍面)上的一块曲面片。当u=0和u=1时,代入上式得到的两条边界为直线段;当v=0和v=1时,得到的两条边界也为直线段。所以双一次B样条曲面由四条直线段包围而成。5.4 Bezier、B样条曲面的生成样条曲面的生成第53页/共75页20 二月 202354v2)双二次B样条曲面当n=m=2时,为双二次B样条曲面,给定(n+1)X(m+1)=3X 3=9个控制点:P00、P01、P02、P10、P11、P12、P20、P21、P22,则5.4 Bezier、B样条曲面的生成样条曲面的生成第54页/共75页20 二月 202355所以有:5.4 Bezier、B样条曲面的生成样条曲面的生成第

31、55页/共75页20 二月 202356从而,双二次B样条曲面为:5.4 Bezier、B样条曲面的生成样条曲面的生成第56页/共75页20 二月 202357v当u和v取定值时,曲面的v线和u线也都是抛物线。v由左图可知,曲面不经过任何一个网格顶点。B样条曲面四个角点不在给定位置上,这与Bezier曲面不同。如果网格向外扩展,曲面也相应延伸。由于二次B样条基函数是一阶连续的,两双二次B样条曲面片的连接也为一阶连续。图-双二次B样条曲面5.4 Bezier、B样条曲面的生成样条曲面的生成第57页/共75页20 二月 202358v3)双三次B样条曲面当n=m=3时,为双三次B样条曲面,给定(n

32、+1)X(m+1)=4X 4=16个控制点:Pij(i=0,1,2,3,j=0,1,2,3),则5.4 Bezier、B样条曲面的生成样条曲面的生成第58页/共75页20 二月 202359所以有:5.4 Bezier、B样条曲面的生成样条曲面的生成第59页/共75页20 二月 202360从而,双三次B样条曲面为:5.4 Bezier、B样条曲面的生成样条曲面的生成第60页/共75页20 二月 2023615.4 Bezier、B样条曲面的生成样条曲面的生成第61页/共75页20 二月 202362图-双三次B样条曲面注:双三次B样条曲面与其特征网格关系如左图所示。双三次B样条曲面片四个角点

33、不在给定的点的位置上。如果将网格向外扩展,曲面也相应延伸,而且由于三次B样条基函数是二阶连续的,所以双三次B样条曲面也二阶连续。与三次样条曲线相似,双三次样条曲面的优点是:与三次样条曲线相似,双三次样条曲面的优点是:极极其自然地解决了曲面片之间的二阶导数连续性问题。只要将其自然地解决了曲面片之间的二阶导数连续性问题。只要将曲面片的特征多边形网格顶点沿某一方向延伸一排,即可产曲面片的特征多边形网格顶点沿某一方向延伸一排,即可产生另一块曲面片生另一块曲面片。5.4 Bezier、B样条曲面的生成样条曲面的生成第62页/共75页20 二月 202363(3)绘制B样条曲面及生成程序 例:上机编程绘制

34、一双三次B样条曲面。1.根据如下公式,编程绘制一B样条曲面。5.4 Bezier、B样条曲面的生成样条曲面的生成第63页/共75页20 二月 2023642.参考程序为:/*To generate a Bezier and 3B_Splline curved surface*/#includegraphics.h#includemath.h#includestdio.h#includeconio.h#includestdlib.h#define n 10main()int driver,mode;int i,k,m,j;int x0=300,y0=300;注意:此程序为绘制一双三次样条曲面。为

35、了比较,程序中也给出了画双三次Bezier曲面的程序段,用户在运行程序时可以根据提示输入(画Bezier曲面)或(画样条曲面),来选择所要绘制的曲面。输出图形结果见后附录。说明5.4 Bezier、B样条曲面的生成样条曲面的生成第64页/共75页20 二月 202365int p443=12,145,50,24,120,50,45,117,50,65,140,50,24,65,34,56,45,34,87,56,34,99,75,34,43,120,20,65,98,20,87,100,20,111,115,20,15,160,0,34,120,0,55,135,0,75,170,0;floa

36、t u0,u1,u2,u3,v0,v1,v2,v3;float q10,q11,q12,q13,du,dv;float qn+1n+13,q203,q213,q223,q233,q303,q313,q323,q333;float x,y;printf(input j:(0-bezier,1-B_spline)n);5.4 Bezier、B样条曲面的生成样条曲面的生成第65页/共75页20 二月 202366 scanf(%d,&j);driver=DETECT;mode=0;initgraph(&driver,&mode,D:TC);setbkcolor(1);setcolor(15);for

37、(i=0;i=3;i+)for(k=0;k=3;k+)x=(-0.7071*pik0+0.7071*pik1+200)*2-300;y=(0.4082*pik0+0.4082*pik10.8165*pik2+200)*2-300;if(k=0)moveto(x,y);lineto(x,y);5.4 Bezier、B样条曲面的生成样条曲面的生成第66页/共75页20 二月 202367 for(i=0;i=3;i+)for(k=0;k=3;k+)x=(-0.7071*pki0+0.7071*pki1+200)*2-300;y=(0.4082*pki0+0.4082*pki10.8165*pki2

38、+200)*2-300;if(k=0)moveto(x,y);lineto(x,y);du=dv=1.0/n;for(i=0;i=n;i+)u0=(i*du)*(i*du)*(i*du);u1=(i*du)*(i*du);u2=i*du;u3=1;5.4 Bezier、B样条曲面的生成样条曲面的生成第67页/共75页20 二月 202368if(j=0)q10=u0*(-1)+u1*3+u2*(-3)+u3*1;q11=u0*3+u1*(-6)+u2*3;q12=u0*(-3)+u1*3;q13=u0*1;if(j=1)q10=(u0*(-1)+u1*3+u2*(-3)+u3*1)/6;q11

39、=(u0*3+u1*(-6)+u3*4)/6;q12=(u0*(-3)+u1*3+u2*3+u3*1)/6;q13=(u0*1)/6;for(k=0;k=2;k+)q20k=q10*p00k+q11*p10k+q12*p20k +q13*p30k;q21k=q10*p01k+q11*p11k+q12*p21k+q13*p31k;5.4 Bezier、B样条曲面的生成样条曲面的生成第68页/共75页20 二月 202369q22k=q10*p02k+q11*p12k+q12*p22k+q13*p32k;q23k=q10*p03k+q11*p13k+q12*p23k+q13*p33k;if(j=0

40、)q30k=q20k*(-1)+q21k*3+q22k*(-3)+q23k*1;q31k=q20k*3+q21k*(-6)+q22k*3;q32k=q20k*(-3)+q21k*3;q33k=q20k*1;if(j=1)q30k=(q20k*(-1)+q21k*3+q22k*(-3)+q23k*1)/6;5.4 Bezier、B样条曲面的生成样条曲面的生成第69页/共75页20 二月 202370 q31k=(q20k*3+q21k*(-6)+q22k*3)/6;q32k=(q20k*(-3)+q22k*3)/6;q33k=(q20k*1+q21k*4+q22k*1)/6;for(m=0;m=

41、n;m+)v0=(m*dv)*(m*dv)*(m*dv);v1=(m*dv)*(m*dv);v2=m*dv;v3=1;for(k=0;k=2;k+)qimk=q30k*v0+q31k*v1+q32k*v2 +q33k*v3;第70页/共75页20 二月 202371setcolor(4);for(i=0;i=n;i+)for(m=0;m=n;m+)x=(-0.7071*qim0+0.7071*qim1+200)*2-300;y=(0.4082*qim0+0.4082*qim1-0.8165*qim2+200)*2-300;if(m=0)moveto(x,y);lineto(x,y);for(m

42、=0;m=n;m+)for(i=0;i=n;i+)第71页/共75页20 二月 202372 x=(-0.7071*qim0+0.7071*qim1+200)*2-300;y=(0.4082*qim0+0.4082*qim1-0.8165*qim2+200)*2-300;if(m=0)moveto(x,y);lineto(x,y);if(j=0)printf(3Bezier curved surface);if(j=1)printf(3B_Splline curved surface);getch();closegraph();第72页/共75页20 二月 2023733.运行结果1:绘制双三次Bezier曲面,如下图所示。图 双三次Bezier曲面第73页/共75页20 二月 2023743.运行结果2:绘制双三次B样条曲面,如下图所示。双三次B样条曲面第74页/共75页20 二月 2023西安工程大学数学系75感谢您的观赏!第75页/共75页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com