版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第8章章8.1 基本概念8.2 Bezier曲线8.3 Bezier曲面8.4 B样条曲线8.5 B样条曲面8.6 本章总结习题7 工业产品的几何形状大致可分为两类:一类由初等解析曲面,如平面、圆柱面、圆锥面、球面和圆环面等组成,可以用初等解析函数完全清楚地表达全部形状。另一类由自由曲面组成,如汽车车身、飞机机翼和轮船船体等曲面,不能用初等解析函数完全清楚地表达全部形状,需要构造新的函数来进行研究,这些研究成果形成了计算机辅助几何设计(Computer Aided Geometric Design,CAGD)学科。汽车曲面 计算机辅助设计与制造(CAD/CAM) 飞机、汽车、船舶外形的设计
2、CATIA波音 宝马 奔驰 克莱斯勒 水泵叶轮和齿轮等机械零件的设计 BezierBezier曲线应用曲线应用BezierBezier曲线应用曲线应用桥梁建筑物以及日用品的设计 曲线字形轮廓描述 地图图形管理系统 真实感图形的绘制BezierBezier曲线应用曲线应用还有那些应用? 已知直线段的起点坐标P0(x0,y0)和终点坐标P1(x1,y1),直线段的显式方程表示为 )(001010 xxxxyyyy隐函数方程表示为 0)(),(001010 xxxxyyyyyxf参数方程表示为 tyyyytxxxx)()(010010,t0,1 插值(Interpolation):当用一组数据点来指
3、定曲线的形状时,曲线精确地通过给定的数据点且形成光滑的曲线,称为曲线的插值。 逼近(Approximation):当用一组控制点来指定曲线的形状时,曲线被每个控制点所吸引,但实际上并不经过这些控制点,称为曲线的逼近 。插值与逼近统称为拟合(Fitting)。逼近曲线插值曲线 通常单一的曲线段或曲面片难以表达复杂的形状,必须将一些曲线段连接成组合曲线,或将一些曲面片连接成组合曲面,才能描述复杂的形状。为了保证在连接点处光滑过渡,需要满足连续性条件。 零阶连续性 一阶连续性 二阶连续性 几何连续性:G0,指相邻两段曲线在结合点处具有相同的坐标。G1,指相邻两段曲线在结合点处的一阶导数成比例 。G2
4、,指相邻两段曲线在结合点处的一阶导数和二阶导数成比例。 参数连续性:C0,指相邻两段曲线在结合点处具有相同的坐标。C1,指相邻两段曲线在结合点处具有相同的一阶导数。C2,指相邻两段曲线在结合点处具有相同的一阶导数和二阶导数。 Bezier Bezier曲线由法国雪铁龙(Citroen)汽车公司的de Casteljau于1959年发明,后来又由法国雷诺(Renault)汽车公司的工程师Bezier于1962年独立发明。De Casteljau几种典型的Bezier曲线 In 1959, while working at Citroen, Paul De Casteljau developed
5、an algorithm for evaluating calculations on a certain family of curves, which would later be formalized and popularized by engineer Pierre Bezier, and the curves called De Casteljau curve or Bezier curve. 给定n+1个控制点Pi(i0,1,2n),称为n次Bezier曲线。 t0,1 式中,Pi(i0,1,2n)是控制多边形的n+1个控制点,控制多边形是连接n条边构成的多边形。Bi,n(t)
6、是Bernstein基函数,其表达式为: )()(,0tBPtpniniiiniinininittCttinintB)1 ()1 ()!( !)(, 在实际应用中,最常用的是三次Bezier曲线,其次是二次Bezier曲线,高次Bezier曲线一般很少使用。 void CTestView:DrawBezier()/绘制Bezier曲线CDC *pDC=GetDC();CPen NewPen,*pOldPen;NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255);/曲线颜色pOldPen=pDC-SelectObject(&NewPen);pDC-MoveTo
7、(P0);for(double t=0.0;t=1.0;t+=0.01)double x=0,y=0;for(int i=0;iLineTo(Round(x),Round(y);pDC-SelectObject(pOldPen);NewPen.DeleteObject();ReleaseDC(pDC);double CTestView:C(const int &n, const int &i)/Bernstein第一项return double(Fac(n)/(Fac(i)*Fac(n-i);long CTestView:Fac(int n)/阶乘函数int f;if(0=n|
8、1=n)f=1;elsef=n*Fac(n-1);return f;Power幂,Factorial,阶乘阶乘当n1时,Bezier曲线的控制多边形有二个控制点P0和P1,Bezier曲线是一次多项式。一次Bezier曲线是一段直线。 )()(P )()(1 , 111 , 001 ,10tBPtBtBPtpiii10Pt)(1Pt 当n2时,Bezier曲线的控制多边形有三个控制点P0、P1和P2,Bezier曲线是二次多项式。二次Bezier曲线是一段抛物线。 BPP )()(2,222, 112, 002,20BPBtBPtpiii P t)1 (2Pt)(122102Ptt 当n3时,
9、Bezier曲线的控制多边形有四个控制点P0、P1、P2和P3,Bezier曲线是三次多项式。 三次Bezier曲线是段自由曲线。 Pt P t)-(1t 3)1 (3Pt)(1 33221203Ptt Pt P )3tt 3()363 (1)P3t-3tt(33223123023Pttt,。 BP BPP )()(3,332,323 , 113 , 003 ,30BPBtBPtpiii,。 写成矩阵形式为t0,1 32102300010033036313311PPPPttt32103 , 33 , 23 , 13 , 0)(PPPPBBBBtp三次三次Bezier曲线的曲线的Bernstei
10、n基函数:基函数: 3233 , 0)1 (133)(tttttB2233 , 1)1 (3363)(ttttttB)1 (333)(2233 , 2tttttB33 , 3)(ttB4个基函数 在区间0,1范围内,每个基函数均不为零,说明不能使用控制多边形对曲线的形状进行局部调整,如果要改变某一控制点位置,整条曲线都将受到影响。 Bernsteint0,1(i0,1,2n) iniinininittCttinintB)1 ()1 ()!( !)(,0, 00, 1)0(,iiBnininiBni, 0, 1) 1 (,, 这里用到:001,0!=1 0)(,tBni1)1 ()1 ()(00
11、,nniiniinninittttCtB,t0,1 )(,)1 (1 ()1 ()1 (innininnninttCtBinninCC因为:)()1 ()1 (,tBttCtBniiniinnin)()()(1,1, 1,tBtBntBninini,(i0,1,2n) Bernstein基函数的性质决定了Bezier曲线的性质 当t0时,p(0)P0;当t1时,p(1)Pn。 )()()(1,1, 110tBtBPntpnininii)()()()(1, 111,011,001, 10tBPtBPtBPtBPnnnnn)()()()(1,1, 11, 111,21tBPtBPtBPtBPnnn
12、nnnnnnnnn )()(11, 11niniiitBPPn )()0(01PPnp )() 1 (1nnPPnp, 在起始点t0, B0,n-1(0)1,其余项均为0,故有在终止点t1, Bn-1,n-1(1)1,其余项均为0,故有 当t=0时, )()(1)2(100112012PPPP)n(nPPP)n(n)(p当t=1时, )()(1)2(1121121nnnnnnnPPPP)n(nPPP)n(n)(p 起始点和终止点的二阶导数分别取决于最开始的3个控制点和最后的3个控制点。 2122-2-1 -2(t)BPP(P)n(n(t)p,niiinii iniPP*由控制点,(i0,1,2
13、n),构造出的新Bezier曲线与原Bezier曲线形状相同,但走向相反。ninininniniinniniitBPtBPtBPtp0,0,0*)1 ()()()()1 ()1 (,0tptBPninii 这个性质说明Bezier曲线在控制多边形的起点和终点具有相同的性质 0)(,tBni1)(0,ninitB由Bernstein基函数的正性和权性可知,在闭区间0,1内, ,而且这说明Bezier曲线位于控制多边形构成的凸包之内,而且永远不会超出凸包的范围。凸包 根据以上性质知道,Bezier曲线是拟合曲线,在控制多边形的第一个顶点和最后一个顶点处进行插值,其形状直接受其余控制点的影响。(1)
14、曲线过控制多边形的起始点和终止点。(2)曲线起始点处的一阶导数是通过第一个控制点和第二个控制点之间的矢量来定义;曲线终止点处的一阶导数是通过最后一个控制点和倒数第二个控制点之间的矢量来定义。(3)曲线在起始点的二阶导数依赖于起始的3个控制点;曲线在终止点的二阶导数依赖于最后的3个控制点。 Bezier曲线上的点,可以使用Bezier曲线方程直接计算,但使用de Casteljau递推算法则要简单的多。 给定空间n+1个控制点Pi(i=0,1, 2n)及参数t,de Casteljau递推算法表述为)()()1 ()(111tPttPttPririri 1 , 0 ;, 1 , 0 ;, 2 ,
15、 1trninr(8-16) 当n=3时,有 0, 31 , 0, 22 , 1 , 0, 1iririr三次Bezier曲线递推如下 )()()1 ()()()()1 ()()()()1 ()(030212020111010010tPttPttPtPttPttPtPttPttP)()()1 ()()()()1 ()(121121111020tPttPttPtPttPttP)()()1 ()(212030tPttPttP其中:规定:iiPtP)(0riPnP0定义Bezier曲线的控制点编号为de Casteljau已经证明,当r=n时,根据式(8-16)可以绘制n次Bezier曲线。,其中,
16、r为递推次数。表示曲线上的点。第一级递推第二级递推第三级递推 de Casteljau算法的基础是在线段P0P1上选择一个点P(t),使得P(t)点划分P0P1为 t:(1-t)两段,如图8-17所示。给定点P0 、P1的坐标以及t的值,点P(t)的坐标为10010)1 ()()(tPPtPPtPtP,t0,1 (8-17)图8-17 de Casteljau算法基础 依次对原始控制多边形的每一边执行同样的定比分割,所得的分点就是第一级递推生成的中间顶点 1iP(i0,1,,n-1),重复进行下去,直到rn,得到一个中间顶点 (i0,1,,n-2)。 2iP重复进行下去,直到rn,得到一个中间
17、顶点 nP0该点的轨迹即为Bezier曲线上的点P(t)。 以n3的三次Bezier曲线为例,讲解de Casteljau算法的几何作图分法。取t=0,t1/3,t2/3,t=1, 作图绘制 。 图8-18 绘制t=1/3的点nP0图8-19 绘制t=2/3的点图8-20 点的运动轨迹nP0 当n3,t=1/2时,de Casteljau递推算法绘制Bezier曲线的过程如上图所示。de Casteljau算法递推出的 riP呈直角三角形,如下图所示 。图8-21 de Casteljau递推三角形void CTestView:DrawBezier()CDC* pDC=GetDC();pDC-
18、MoveTo(P0);for(int k=0;k=n;k+)ptk.x=Pk.x;ptk.y=Pk.y; for(double t=0.0;tLineTo(Round(pp0n.x),Round(pp0n.y);ReleaseDC(pDC);1.绘制Bezier曲线函数void CTestView:deCasteljau(double t,CP2 *p)for(int k=0;k=n;k+)ppk0=pk;for(int r=1;r=n;r+)/de Casteljau递推公式for(int i=0;i4,q4),构造双三次B样条曲面。 控制点矩阵为 qpppqqjiPPPPPPPPPP,1
19、,0, 11 , 10, 1, 01 , 00, 0, 因为双三次B样条曲面的控制顶点矩阵是44的,所以需要将Pi,j控制顶点矩阵进行分块。双三次B样条曲面的分块顶点矩阵为 3, 32, 31, 3, 33, 22, 21, 2, 23, 12, 11, 1, 13,2,1,srsrsrsrsrsrsrsrsrsrsrsrsrsrsrsrsrPPPPPPPPPPPPPPPPP (8-39) 式中,r=0,p+1-4;s=0,q+1-4。例例8-1 8-1 已知pq5,空间控制网格Pi,j共有36个顶点,请计算其分块矩阵。5 , 54, 53 , 52, 51 , 50, 55 , 44, 43
20、 , 42, 41 , 40, 45 , 34, 33 , 32, 31 , 30, 35 , 24, 23 , 22, 21 , 20, 25 , 14, 13 , 12, 11 , 10, 15 , 04, 03 , 02, 01 , 00, 0,PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPji分块矩阵共有9个 3 , 32, 31 , 30 , 33 , 22, 21 , 20 , 23 , 12, 11 , 10 , 13 , 02, 01 , 00 , 00 , 0PPPPPPPPPPPPPPPPP3 , 42, 41 , 40, 43 , 32, 31
21、 , 30, 33 , 22, 21 , 20, 23 , 12, 11 , 10, 10, 1PPPPPPPPPPPPPPPPP3 , 52, 51 , 50, 53 , 42, 41 , 40, 43 , 32, 31 , 30, 33 , 22, 21 , 20, 20, 2PPPPPPPPPPPPPPPPP4, 33 , 32, 31 , 34, 23 , 22, 21 , 24, 13 , 12, 11 , 14, 03 , 02, 01 , 01 , 0PPPPPPPPPPPPPPPPP4, 43 , 42, 41 , 44, 33 , 32, 31 , 34, 23 , 22,
22、21 , 24, 13 , 12, 11 , 11 , 1PPPPPPPPPPPPPPPPP4, 53 , 52, 51 , 54, 43 , 42, 41 , 44, 33 , 32, 31 , 34, 23 , 22, 21 , 21 , 2PPPPPPPPPPPPPPPPP5 , 34, 33 , 32, 35 , 24, 23 , 22, 25 , 14, 13 , 12, 15 , 04, 03 , 02, 02, 0PPPPPPPPPPPPPPPPP5 , 44, 43 , 42, 45 , 34, 33 , 32, 35 , 24, 23 , 22, 25 , 14, 13 ,
23、12, 12, 1PPPPPPPPPPPPPPPPP5 , 54, 53 , 52, 55 , 44, 43 , 42, 45 , 34, 33 , 32, 35 , 24, 23 , 22, 22, 2PPPPPPPPPPPPPPPPP36个控制点的双三次B样条曲面双三次B样条曲面绘制的花瓶 本章讲解了Bezier曲线和B样条曲线以及双三次Bezier曲面和双三次B样条曲面。Bezier曲线曲面与B样条曲线曲面均属于逼近范畴。B样条曲线和Bezier曲线的最主要差别在于基函数不同。Bernstein基函数是一个整体函数,而B样条基函数一个分段函数,所以B样条曲线可以进行局部控制点调整。Bez
24、ier曲线曲面的阶次与控制多边形的顶点数有关,B样条曲线曲面的阶次可以自由决定。这样如果控制多边形顶点数超过4个时,两段三次Bezier曲线或两张双三次Bezier曲面片之间连接时就存在拼接的问题,而B样条曲线曲面可以自由地扩展到多个控制点,始终保持阶次不变,而且扩展后的分段曲线或分段曲面实现了自然连接。 根据二次Bezier曲线的基函数,使用MFC编程绘制图8-46所示二次Bezier曲线,要求可以使用鼠标左键拖动控制多边形的顶点,同时曲线能随之发生变化。 图8-46 二次Bezier曲线2.根据三次Bezier曲线的基函数,使用MFC编程绘制图8-47所示的三次Bezier曲线。要求可以使
25、用鼠标左键拖动控制多边形的顶点,同时曲线能随之发生变化。 图8-47 三次Bezier曲线3.在屏幕上使用鼠标绘制任意控制点的控制多边形,基于de Casteljau算法绘制如图8-48所示的Bezier曲线。图8-48 de Casteljau算法 4.在屏幕上使用鼠标左键绘制数量大于4的任意顶点形成控制多边形,单击鼠标右键绘制三次B样条曲线,同时在控制多边形的每一个三角形内用虚线表示三次B样条曲线的几何生成原理,效果如图8-49所示,请使用MFC编程实现。 图8-49 三次B样条曲线生成原理 5.使用MFC编程,分别绘制4个控制点的三次Bezier曲线与三次B样条曲线,观察二者与控制多边形
26、的逼近程度,如图8-50所示。图8-50 三次B样条曲线和Bezier曲线 B样条曲线Bezier曲线6.给定控制网格的16个顶点P0,0(20,0,200),P0,1(0,100,150),P0,2(-130,100,50),P0,3(-250,50,0);P1,0(100,100,150),P1,1(30,100,100),P1,2(-40,100,50),P1,3(-110,100, 0);P2,0(280,90,140),P2,1(110,120,80),P2,2(30,130,30),P2,3(-100,150,-50);P3,0(350,30,150),P3,1(200,150,5
27、0),P3,2(50,200,0),P3,3(0,100,-70)。请绘制使用斜等测投影绘制图8-51所示的双三次Bezier网格曲面。图8-51 双三次Bezier网格曲面 7.使用习题6的数据分别绘制双三次Bezier曲面的正交投影和透视投影旋转动画,如图8-52所示。 图8-52 动态旋转Bezier曲面 8.给定7749个包含重点的控制点如下:P0,0(200,-200,100),P0,1(200,-200,100),P0,2(200,-200,100),P0,3(300,100,300),P0,4(-200,-200,100),P0,5(-200,-200,100),P0,6(-200,-200,100);P1,0(200,-200,100),P1,1(200,-200,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聊城2024年健身服务合同
- 统编人教版六年级语文上册《语文园地七》精美课件
- 土地承包权协议书范本版
- 皮下注射技术操作流程课件
- 农村私人土地买卖合同范本
- 二零二四年度商务考察与招商合同2篇
- 益生菌奶粉课件
- 2024年度离岗创业人员培训服务合同
- 租房定金合同范本共
- 财务模拟述职报告范文
- 知识竞赛pptPPT(完美版)
- 产品包装、防护和交付管理规定
- 施工现场扬尘防治资料 全套
- DB12-T1059-2021行洪河道堤防工程安全监测技术规程
- 销售人员心态培训ppt
- 郑商所品种基本面甲醇交易手册
- 管理学-第九章-控制工作
- 冯至 江上详细分析
- 浙江省执业医师注册健康体检表(新)
- 阑尾炎超声诊断共29页PPT资料课件
- 初中英语说课ppt模板通用PPT课件
评论
0/150
提交评论