曲线的细分技术.docx

上传人:b****8 文档编号:8831583 上传时间:2023-02-02 格式:DOCX 页数:41 大小:315.12KB
下载 相关 举报
曲线的细分技术.docx_第1页
第1页 / 共41页
曲线的细分技术.docx_第2页
第2页 / 共41页
曲线的细分技术.docx_第3页
第3页 / 共41页
曲线的细分技术.docx_第4页
第4页 / 共41页
曲线的细分技术.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

曲线的细分技术.docx

《曲线的细分技术.docx》由会员分享,可在线阅读,更多相关《曲线的细分技术.docx(41页珍藏版)》请在冰豆网上搜索。

曲线的细分技术.docx

曲线的细分技术

曲线的细分技术

本科毕业设计

(2013届)

题目

Bézier曲线的细分技术

学院

计算机学院

专业

计算机科学与技术

班级

09052314

学号

09051412

学生姓名

郭佳远

指导教师

余正生

完成日期

2013年6月

 

诚信承诺

我谨在此承诺:

本人所写的毕业论文《Bézier曲线的细分技术》均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。

承诺人(签名):

年月日

摘要

本毕业设计主要设计Bézier曲线的细分技术。

Bézier曲线在曲线曲面工程设计中是一种比较常用的曲线,它在线面造型及线面重构中发挥着重要作用。

Bézier曲线的显著特性是“刚性”有余,“柔性”不足。

为了增加曲线的“柔性”,往往采用升阶的方法,通过增加新控制顶点来加强对曲线修改的灵活性。

但是如果一旦移动新生成的控制顶点,曲线次数也随之增加,有时在对曲线进行修改时,不希望改编曲线的整体次数,此时就需要对曲线进行细分。

我们希望从一个控制多边形出发,按照我们事先选取的细分规则,在给定的控制多边形中插入新的顶点,再连接这些新的顶点得到新的控制多边形,所得到的新的控制多边形是初始控制多边形的加细。

不断的重复上述过程,随着细分的不断进行,控制多边形就被逐渐加细,其极限状态为一条曲线,称为递归细分曲线。

在完成毕业设计的过程中,我们首先在理论上对我们的问题进行数学分析与证明,然后对解决问题的算法进行实现,并在文中通过样例来支持本毕业设计研究结论的有效性。

 

关键词:

计算机辅助几何设计;Bézier曲线;deCasteljau算法;细分曲线

ABSTRACT

ThemainaimofthisthesisistodeviseBéziercurvessubdivisiontechniques.Béziercurveisarelativelycommoncurveintheengineeringdesignofcurvesandsurfaces,Itplaysanimportantroleatonlinefaceshapeandlineandplanereconstruction.TheBéziercurvesnotablefeaturesisthe"rigid"morethan"flexible".Inordertoincreasethe"flexible"ofthecurve,weoftenadoptthemethodofAscendingOrder,Byaddingnewcontrolpointstoenhancetheflexibilityofthecurvechanges.Butifmobilenewlygeneratedcontrolvertices,thecurvefrequencyandalsoincreases,sometimestomodifythecurve,wedonotwanttheoverallfrequencyandadaptationcurve,thenweneedtocurverefinements.

Wehopethatthedeparturefromacontrolpolygon,Selectedinadvanceinaccordancewithourrulessegments,insertanewvertexinthegivencontrolpolygon,andthenconnectthesenewverticestothenewcontrolpolygonobtainednewcontrolpolygonistherefinementoftheinitialcontrolpolygon.Constantlyrepeattheprocess,asthebreakdownoftheongoingcontrolpolygongraduallyincreasethefine,theultimatestatusofacurve,knownasrecursivesubdivisioncurve.Duringourworkingprocess,wefirstlyprovedouralgorithmmathematically,thenimplementedouralgorithmbyprograms,andsupportedourmethodwithsomerealsamples.

Keywords:

Computeraidedgeometricdesign;Béziercurves;deCasteljaualgorithm;subdivisioncurve

 

1引言1

1.1课题的背景和研究意义1

1.2论文的研究内容及主要工作2

1.3论文的结构3

2预备知识4

2.1Bernstein多项式4

2.2Bézier曲线4

2.3实际问题描述5

3Bézier曲线的细分7

3.1细分曲线的构造思想和发展史7

3.2Bézier曲线的细分算法9

3.3实例分析12

4开发环境配置与调试16

4.1OpenGl简介16

4.2VS2010上OpenGl开发环境的配置17

4.3OpenGl的逻辑组织结构19

5程序设计与算法实现23

5.1主要算法23

5.2使用C++语言实现该算法24

6程序调试与维护29

6.1程序操作29

7结论32

致谢33

参考文献34

 

1引言

1.1课题的背景和研究意义

随着计算机技术的发展和普及,计算机辅助设计与制造技术(CAD(ComputerAidedDesign)/CAM(ComputerAidedManufacture))得到了迅猛的发展,他们推动了许多领域的设计革命,CAD/CAM技术的发展和应用水平已经成为衡量一个国家现代化水平的重要标志之一。

而计算机辅助几何设计(ComputerAidedGeometryDesign,简称CADG)是CAD/CAM的理论基础和关键技术,一旦CAGD中有一种新的几何造型出现,往往就能很快地应用到CAD/CAM系统中。

早期是由数学放样和外形设计的实际需要,作为样条函数及函数逼近论等在飞机、汽车、船舶制造中的实际应用而发展起来的。

现在,它已与许多学科有了紧密联系,成为一门新兴的交叉学科和边缘学科。

CAGD主要研究在计算机图像系统的环境下对曲面信息的表示、逼近、分析和综合。

现在,越来越多的科研人员从事这方面的研究,并取得了瞩目的成果。

其应用的范围已从最初的飞机、汽车以及船舶制造业发展到建筑设计、生物工程、医疗卫生事业、航天材料、电子工程、服装设计、多媒体技术、动画制作等各个技术领域。

随着计算机图形显示对于真实性、实时性和交互性的日益增强,图形工业和制造工业迈向一体化、信息化和网络化步伐的日益加快,CAGD得到了飞速的发展。

它经历了从离散到连续,再从连续到离散的发展过程。

但是,当细分(Subdivision)技术出现以后,这种造型方法得到了很大的改进,人们可以直接从离散到离散,减少了过去的建立连续函数的那个环节。

细分算法的由来最早可以追溯到1956年deRahm.G提出的割角(CuttingCorner)思想。

其思想是通过对折线角点进行切割生成光滑曲线。

1974年,Chaikin提出了类似的生成曲线的细分方法。

1978年,Catmull和Clark提出了著名的Catmull-Clark细分模式,标志着细分方法正式成为曲面建模的手段。

80年代末到90年代初期,出现了许多著名的细分方法,如1987年Dyn提出四点法曲线插值模式及六点法曲线插值模式,1991年Dyn又提出Binary细分模式,稳定细分模式[Cavaretta1991],Loop模式[Loop1987],蝶形模式[Dyn1990]等。

在细分曲线造型方面,引入均差细分、生成多项式、生成函数等概念描述细分过程,关于细分模式的收敛性、连续性分析已有了系统的研究成果。

90年代中期至今是细分技术的发展期。

这一阶段出现了一些新的细分方法,也有一些方法是对老方法进行改进。

在细分曲线造型方面,蔡志杰对非均匀有序控制顶点时的四点法及变参数四点法的收敛性和连续性进行了分析;骆岩林研究了生成曲线的有理稳定细分方法;丁友东提出了非线性四点插值细分法;金建荣提出了非均匀四点插值细分法,生成的曲线达到G

连续。

2002年,Hassan提出了Ternary四点插值细分法,生成了曲线达到G

连续。

近些年提出的细分模式还有:

Ivrissimtzis等[Ivrissimtzis2004]的

模式;Peters[Peters2003]的4-3模式;Jena[Jena2002]基于三角样条的细分算法;2001年李桂清提出了

细分等。

1.2论文的研究内容及主要工作

我们希望从一个控制多边形出发,按照我们事先选取的细分规则,在给定的控制多边形中插入新的顶点,再连接这些新的顶点得到新的控制多边形,所得到的新的控制多边形是初始控制多边形的加细。

不断的重复上述过程,随着细分的不断进行,控制多边形就被逐渐加细,其极限状态为一条曲线,称为递归细分曲线。

在完成毕业设计的过程中,我们首先在理论上对我们的问题进行数学分析与证明,然后对解决问题的算法进行实现,并在文中通过样例来支持本毕业设计研究结论的有效性。

首先,我们要掌握掌握Bézier曲线的定义式,和控制点的选择,熟悉Bézier曲线的性质。

然后,对Bézier曲线的DeCasteljau定义进行数学推导,证明由n+1个控制顶点

定义的n次Bézier曲线

可以被定义为由前后n个控制顶点决定的两个n-1次Bézier曲线

线性组合起来。

考虑到实际设计的应用需求,我们将Bézier曲线的形式进行描述,在为造型设计带来方便的同时,统一描述了整张造型曲面的数学形式,便于数学证明的同时也为程序语言表达提供了方便。

在具体的实现过程中,我们先编程实现Bézier曲线,并在低次曲线情形产生一些示例。

然后编程实现Bézier曲线的细分技术,并能产生直观的可视化效果图。

本毕业设计能够显著简化Bézier曲线的设计过程,为现实生产设计带来了方便。

1.3论文的结构

全文一共7章,按照整个对Bézier曲线和Bézier曲线细分技术研究过程来安排章节间的逻辑结构。

第1章是前言部分,主要介绍课题的背景和研究意义,并介绍了研究过程中需要完成的主要工作。

第2章介绍了参数曲线与参数曲面的简单预备知识,为之后的证明引入必要的基本的定理与结论。

第3章是本文的核心章节,Bézier曲线细分技术的生成算法,并给出了本算法的若干实例以支持本算法的正确性。

第4章主要介绍了OpenGl开发环境的插件开发与其他功能对本文算法的支持。

第5章介绍了Bézier曲线细分技术生成算法以及该算法在OpenGl开发环境下的具体实现过程和详细代码。

第6章给出了对本项目的后续开发与维护进行了介绍。

第7章为全文的总结。

2预备知识

2.1Bernstein多项式

定义:

设f是[0,1]上的函数,

约定

=1.称[0,1]上的多项式函数

为f的第n个Bernstein多项式。

应当将

视为一个映射,它把[0,1]上的函数映射为[0,1]上的多项式函数。

为第n个Bernstein算子。

2.2Bézier曲线

2.2.1Bézier曲线的定义

或定义在任意区间[a,b],即

表示n次Bézier曲线,

(i=1,2,...,n)表示控制点,其中

表示k次Bernstein基函数,k为控制多边形的顶点的序号,

,且

2.2.1Bézier曲线的性质

性质1Bézier曲线的递推关系:

性质2端点性质:

(1)Bézier曲线

为起点,以

为终点;

(2)Bézier曲线

与首末边相切,即

性质3对称性:

将Bézier曲线多边形顺序取反,定义同一条曲线,仅曲线方向取反。

性质4凸包性质:

一个点集的凸包被定义为由该点集的元素形成的所有的凸组合的集合。

可以这样来想象确定平面上点集的凸包:

在点集的每一个元素位置上打上钉子,然后用一根封闭的橡皮绳套在所有钉子的外面,橡皮绳因弹性自然收缩形成封闭的多边形区域,略去钉子与橡皮绳的粗面,这个包括边界在内的多边形区域就是该点集的凸包。

对于空间分布的点,则可想象一封闭的橡皮膜包住这些点,任其弹性收缩所形成的的空间区域即为其凸包。

Bézier曲线的凸包性质是指Bézier曲线恒为于它的控制顶点的凸包内,这一性质确定了Bézier曲线的所在范围,使得设计人员预先就心中有数。

它还被用于分割求交:

如果用Bézier形式表示的两相交元素的控制顶点的凸包不相交,则可定义它们不相交。

性质5几何不变性:

Bézier曲线的形状仅与控制多边形的各顶点有关,与坐标系的选取无关

性质6变差减少性质:

任意一平面与Bézier曲线的交点数不会超过它与控制多边形的交点数,但包含等个控制多边形的平面除外。

这一性质导致如下的凸性定理:

如定义平面Bézier曲线的控制多边形是凸的(指连接首末顶点构成的封闭多边形为凸的,相重边情况除外),则所定义的平面Bézier曲线也是凸的

性质7Bézier曲线的导矢:

n次Bézier曲线的首末端点的k阶导矢分别为(k

N):

其中高阶向前差分矢量由低阶向前差分矢量递推地定义为:

2.3实际问题描述

Bézier曲线就是这样的一条曲线,它是依据四个位置任意的点坐标绘制出的一条光滑曲线。

在历史上,研究Bézier曲线的人最初是按照已知曲线参数方程来确定四个点的思路设计出这种矢量曲线绘制法。

Bézier曲线的有趣之处更在于它的“皮筋应”,也就是说,随着点有规律地移动,曲线将产生皮筋伸引一样的变换,带来视觉上的冲击。

1962年,法国数学家PierreBézier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名是为贝塞尔曲线。

“贝赛尔”工具在photoshop中叫“钢笔工具”;在CorelDraw中翻译成“贝赛尔工具”;而在Fireworks中叫“画笔”。

它是用来“画线”造型的一种专业工具。

当然还有很多工具也可以完成画线的工作,例如大家常用的photoshop里的直线、喷枪、画笔工具,Fireworks里的直线、铅笔和笔刷工具,CorelDraw里的自由笔,手绘工具等等。

用“贝塞尔”工具无论是画直线或是曲线,都非常简单,随手可得。

其操作特点是通过用鼠标在面板上放置各个锚点,根据锚点的路径和描绘的先后顺序,产生直线或者是曲线的效果。

我们都知道路径由一个或多个直线段或曲线段组成。

锚点标记路径段的端点。

在曲线段上,每个选中的锚点显示一条或两条方向线,方向线以方向点结束。

方向线和方向点的位置确定曲线段的大小和形状。

移动这些元素将改变路径中曲线的形状,可以看下图。

路径可以是闭合的,没有起点或终点(如圆圈),也可以是开放的,有明显的端点(如波浪线)。

[1]

关于“贝塞尔”工具,有两个重要的概念需要了解,那就是“平滑点”和“角点”。

“平滑点”是指临近的那条线段是平滑曲线,它位于线段中央。

平滑曲线由称为平滑点的锚点连接,当移动平滑点的一条方向线时,将同时调整该点两侧的曲线段。

“角点”是指它临近的那条线段至少一边是直的,尖锐的曲线路径由角点连接,当移动角点的一条方向线时,只调整与方向线同侧的曲线段。

在CAD/CAM中,常采用Bézier曲线曲面,这样便于理解曲线/曲面。

但采用Bézier形式的曲线曲面不能精确的表示二次曲线和二次曲面,如球体和圆。

将多项式改为有理形式,不仅能精确表示二次曲线和二次曲面,且增加了设计的自由度。

重复的进行两点线性插值,可以构造Bézier曲线。

重复的进行两点有理插值,可以构造有理Bézier曲线。

  与控制顶点类似,有理Bézier曲线上的点可映射为Bézier曲线上的点或对应的控制多边形上的点。

在透视投影使用理形式与非有理形式产生相同投影时,有理Bézier曲线曲面和有理B样条曲线曲面继承了Bézier曲线曲面和B样条曲线曲面的简单、优美的特性。

这种形式,数学上的分析及几何特性的掌握了解都比其他4D空间(wx、wy、wz、w)方法和单纯的3D空间有理形式要简单和容易。

  现在,有理曲线曲面不仅仅用于表示和构造二次曲线曲面。

对有理曲线曲面的权因子该如何选取往往不很清楚,而且有理形式的计算比非有理形式复杂,但是,由于其构造特性,现在人们已经开始考虑有理Bézier和有理B样条曲线曲面的应用。

3Bézier曲线的细分

3.1细分曲线的构造思想和发展史

细分方法容易产生性能良好的曲线曲面,近些年己成为计算机辅助几何设计及计算机图形学领域内一项重要的研究课题。

其构造思想是从一个控制多边形或初始控制网格出发,按照事先选取的细分规则(一般是加权平均),在给定的初始控制多边形或控制网格中插入新顶点(这些新顶点是初始控制多边形或控制网格上某几个顶点的加权平均),再连接这些新顶点得到新控制多边形或控制网格,所得新控制多边形或控制网格是初始控制多边形或控制网格的加细。

不断重复上述过程,随着细分的不断进行,控制多边形或控制网格就被逐渐加细,其极限状态为一条曲线或一张曲面,称为递归细分曲线或递归细分曲面。

其实质是一类从序列到序列的迭代算法。

细分算法的由来最早可以追溯到1956年deRahm.G提出的割角(CuttingCorner)思想。

其思想是通过对折线角点进行切割生成光滑。

1974年,Chaikin提出了类似的生成曲线的细分方法。

1978年,Catmull和Clarkt提出了著名的Catmull-Clark细分模式,标志着细分方法正式成为曲面建模的手段。

此时,Doo和Sabin采用离散Fourier变换的方法,对Catmull-Clark模式的收敛性进行了分析,开创了细分模式收敛性矩阵特征分析的先河。

纵观细分发展历史大致可以分成如下三个阶段:

第一阶段:

1980年前后,提出并初步发展时期。

1974年,Chaikin用割角法产生曲线,把离散细分的概念引入到图形学界。

1978年,Catmull和Clark,Doo和Sabin分别将双三次和双二次B样条推广到任意拓扑结构的网格上。

Catmull-Clark细分模式和Doo-Sabin关于奇异点处行为的分析理论标志着细分方法正式成为曲线曲面造型的一种手段。

由于Catmull-Clark细分法能用较少的控制顶点迅速生成具有任意形状的光滑曲面(除奇异点处为C1连续外,曲面处处为C2连续),此方法很快在造型和动画领域付诸应用,从此离散细分曲面造型得到广泛的研究。

第二阶段:

80年代末到90年代初的形成时期。

这一阶段出现了许多著名的细分方法,如1987年D”提出四点法曲线插值模式及六点法曲线插值模式,1991年Dyn又提出Binary细分模式,稳定细分模式[Cavaretta1991],Loop模式[Loop1987],蝶形模式[Dyn1990]等。

在此期间,也有一些方法是对旧方法进行改进[Nasri1987,1991;Halstead1993;Hoppe1994;Zorin1996].Loop模式是一种基于三角网格的细分算法,其实质是四次三方向箱样条在任意拓扑三角网格上的推广。

在细分曲线造型方面,引入均差细分、生成多项式、生成函数等概念描述细分过程,关于细分模式的收敛性、连续性分析己有了系统的研究成果。

在细分曲面造型方面,引入了细分矩阵描述细分过程,引入离散Fourie:

方法、矩阵特征根法、矩阵逼近论等方法多种细分曲面进行特征分析及收敛性连续性分析。

第三阶段:

90年代中期至今为发展时期。

这一阶段出现了一些新的细分方法,也有一些方法是对老方法进行改进。

在细分曲线造型方面,蔡志杰对非均匀有序控制顶点时的四点法及变参数四点法的收敛性和连续性进行了分析;骆岩林研究了生成曲线的有理稳定细分方法;丁友东提出了非线性四点插值细分法;金建荣提出了非均匀四点插值细分法,生成的曲线达到G1连续。

2002年,Hassan提出了Ternary四点插值细分法,生成的曲线达到G2连续。

在曲面造型方面,Peters和Rief提出Mid-edge细分模式;Sederberg等在任意拓扑网格上引入非均匀节点区间的概念,推广得到非均匀细分曲面;DeRose将细分曲面造型方法用于人物动画的设计;Velho和Zorin提出了4-8细分法,其实质是C4连续的四方向样条在任意网格拓扑结构上的推广,在正常点是C4连续的,在奇异点是创连续的;Kobbelt先提出了适合四边形网格的插值算法,后来又提出了

细分模式;Nasrin提出了使细分曲面插值预先指定的二次样条曲线的算法;Levin设计了细分规则用于网格曲线插值的联合细分模式;Habbib提出了基于顶点和边插入的曲线网插值方法;Biermann提出了边界法向插值方法等等。

Ying和Zorin提出一种可以用于构造非流形曲面的细分方法。

近些年提出的细分模式还有:

Ivrissimtzis等[Ivrissimtzis2004]的

模式;Peters[Peters2003]的4-3模式;Hassan等[Hassan2002]的ternary四点插值细分;Jena[Jena2002)基于三角样条的细分算法;2004年李桂清提出了

细分等。

纵观细分发展的历程可以看出,细分的发展是从最初的曲线到张量积曲面,再到任意拓扑结构网格的曲面;从单一的四边形网格或三角形网格到混合网格;从样条推广到石,拒细分;从最初单一的细分到可以产生局部特征的造型曲面。

可见,细分是向着一个造型能力更强,使用更方便,更加经济有效的方向发展的。

细分方法的特点:

1.曲线曲面的生成显示速度快:

符合计算机从离散到离散的造型特点。

2.数值稳定性(Numericalstability):

凸线性组合的细分方法是一个迭代过程,有很好的数值计算稳定性。

3.模型简单(Modelsimplicity):

细分方法的数学模型仅涉及初始数据网格和细分规则,而细分规则往往简单明了,易于实现,效率也高。

4.可升级性(Scalability):

细分算法具有多分辨的性质,特别适合于层次细节技术。

5.适用于任意的拓扑网格(Arbitrarytopologymeshes):

细分曲面可以定义在任意的拓扑网格上,三角形网格或者四边形网格或者两者的混合网格均可。

6.表示的一致性((Uniformityofrepresentation):

这里的一致性是指细分法把曲面片与多面体的表示统一起来,使得造型系统有了统一处理曲面和多面体表示的手段。

细分模式的分类:

从不同角度可以对细分模式进行分类

1.按极限曲线曲面是否过初始控制顶点,细分模式可以分为插值细分模式C(Interpolatorysubdi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1