教育>本科研究生>计算机类
计算几何算法与实现(VisualC++版)

计算几何算法与实现(VisualC++版)"

作者:孔令德等
ISBN:9787121315695
定价:¥49.0
字数:486千字
页数:304
出版时间:2017-08
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书系统介绍Bezier曲线曲面、B样条曲线曲面和NURBS曲线曲面的理论与算法。第1章介绍曲线曲面的基本概念及表示形式;第2章介绍二维图形和三维图形的程序设计方法,示范直线绘图函数的使用方法,重点讲解制作网格模型动画的双缓冲技术;第3章讲解三次样条曲线、三次参数样条曲线、Hermite样条曲线和Cardinal曲线的原理与算法;第4章介绍三次Bezier曲线的定义算法、de Casteljau递推算法,重点讲解基于双三次Bezier曲面片制作Utah 茶壶的算法,并在课程设计部分给出完整的代码;第5 章介绍B 样条的de Boor-Cox递推定义算法、二次和三次均匀B样条算法、非均匀B样条曲线计算节点矢量的Hartley-Judd算法;第6章在曲线部分介绍NURBS精确表示圆弧的方法,在曲面部分重点讲解NURBS构建三维曲面如球、圆环、酒杯的原理和算法。为了改变计算几何以数学公式推导为主的单调学习方法,增强曲线曲面的可视化效果。本书提供所有与原理配套的Visual C++源程序。这些源程序用模块化方法编写,注释简单易懂。为了降低程序的理解难度,旋转曲面投影以最简单的正交投影为主。对于计算机专业教师,可以深入理解原理与代码的对应关系;对于非计算机专业教师,可以直接运行程序,本书不追求数学上的严密性与完整性,而注重于根据曲线曲面的数学公式的编程实现。本书的所有插图全部使用程序绘制。从数学角度的理解转换为图形方面的观察,可有效提高读者的学习兴趣,实现将数学公式借助于编程技术表示为图形效果的设计初衷。本书附录部分给出了6个实验项目及2个课程设计项目,并给出了犹他茶壶和花瓶的Visual C++源代码。本书可作为高等院校计算机科学与技术、数字媒体技术、信息与计算科学、机械设计等专业本科生、硕士生、博士生的教材与参考书,也可供从事游戏开发、计算机建模、计算机图形学等领域的科学工作者参考使用。

前言

数学的研究对象是“数”与“形”。几何学是研究“形”的一门数学学科。最早的几何学是欧氏几何学。阿基米德创立的欧氏几何学,用刚体运动研究几何不变量,这是最原始的几何学。笛卡儿发现坐标系后,形成了解析几何,通过坐标系将几何问题转化为代数问题。随着微积分的诞生,出现了微分几何。20世纪40年代发明计算机后,为计算几何的出现提供了物质基础,很多几何问题都可使用计算机来解决。计算几何是以计算机为核心的、在信息环境下新产生的一门几何学。计算几何是对物体的形状信息进行计算机表示、分析与综合。计算几何的理论只有借助于计算机的编程进实现,才能被更好地理解和应用。 计算几何的研究方面,国外有皮格尔(Piegl)与蒂勒(Tiller)合著的经典教材The NURBS Book,书中重点介绍了关于NURBS 的理论和算法。作为NURBS的主要研究者,皮格尔与蒂勒提出“要想从事CAD,必须了解NURBS”。NURBS是计算几何的集大成者,已成为形状的表示、设计和数据交换的工业标准。国内苏步青与刘鼎元先生于1981年合著且影响深远的《计算几何》,开启了我国计算几何研究的先河。北京航空航天大学的施法中先生出版的《计算机辅助几何设计与非均匀有理B样条》已成为计算机几何领域的翘楚,内容涵盖了国内外近年来的最新研究进展及施法中先生的创新。 本书的研究内容涉及Bezier、B样条、NURBS曲线曲面。其中,“数”是指Bezier、B样条、NURBS等曲线曲面理论中数学公式的严格推理,“形”是指借助于计算机的强大计算能力,将曲线曲面的数学公式表达为图形。分形几何的创始人曼德尔布罗特(Mandelbrot)曾说过,“看到数学公式,我首先想到的是图形,图形的问题解决了,数学的问题也就解决了”。 为了降低理解曲线曲面理论的难度,本书编写的出发点是基于计算几何的基本理论,使用Visual C++编程生成曲线曲面图形。这些图形包括二维曲线图形和三维曲面图形。三维曲面图形主要采用最简单的平行投影讲解,这也有助于降低理解编程的难度。 本书不追求数学上的严密性与完整性,而注重于使用现有的曲线曲面的理论研究结论,编程绘制二维曲线及三维曲面。对于三维曲面,作者借助于三维图形学技术,基于双缓冲技术建立物体的线框模型,支持键盘方向键旋转图形,可从各个角度旋转曲面进行观察。作者在大学中主要讲授计算机图形学课程,出版有普通高等教育“十二五”国家级规划教材——计算机图形学系列教材(见www.klingde.com)。计算机图形学研究的内容是模型与渲染问题。作者在讲授计算机图形学模型时,发现仅使用立方体、球体、圆环等模型太过乏味,进而研究犹他茶壶,并使用Visual C++编程绘制了包含306个控制点的32片双三次曲面。调用Visual C++编写的不同程序模块,学生可以选择绘制壶盖、壶嘴、壶体、壶柄、壶嘴等。这与直接调用OpenGL或3DS中的茶壶模型,只能绘制茶壶的整体效果是不同的。在此基础上,指导博创研究所的学生基于B样条方法与NURBS方法,使用MFC 框架建立不同旋转体的曲面模型。 博创研究所开发了一套“平转立”系统,只要给出一段NURBS二维曲线,就可直接生成其三维模型,并可使用键盘方向键旋转进行交互观察。作为教学相长的范例,学生的快速进步,促使我产生了编写一本适合于应用型本科院校使用的计算几何教材的想法,而该教材应该是图文并茂的。为了编好本书,作者开发了近100 多个源程序,并详细编写了程序注释。博创研究所的石长盛、李振林、陶作柠等同学全程参与了程序的设计与开发,付出了辛苦的努力,在此一并致谢。本书不包含任何手绘插图,每幅插图全部由作者提供的Visual C++算法生成。 插图准确、图例丰富、立体感强,易于理解,更便于教与学。 本书的特点是理论与代码一一对应。代码方面模块性强、注释规范、容易理解。这些代码不仅可以从实践上印证理论的正确性,也从图形可视化角度展示理论应用的效果。本书附录部分给出了6个实验项目及2个课程设计项目,并给出了犹他茶壶和花瓶的源代码。读者可以通过编程提高对理论的认识。读者学习本书的先行课程包括高等数学、C++程序设计等。 本书理论部分由孔令德编写,上机实验及课程设计部分由康凤娥编写。全书由孔令德提出编写提纲并统稿、校对。康凤娥上机调试了全部程序并绘制了插图。 作者提供计算几何算法与实现QQ群,群号为229275085。群内的“共享文件”包括与教学配套的电子课件及相关的案例源程序等教学资源,欢迎读者下载使用。请扫描微信二维码或通过QQ(307622194)与作者联系。就书中理论和编程方面的问题,作者将为读者提供在线答疑。 本书适合于计算机科学与技术专业、数字媒体技术专业、数学与应用数学专业以及机械设计与制造专业的本科生与研究生使用。建议本科生的学习重点为Bezier曲线曲面,研究生的学习重点为B样条与NURBS曲线曲面。 王阳明说过:“知者行之始,行者知之成”,让我们打开计算机,开始学习基于动画的计算几何学,以物体的几何形状来加深对枯燥数学公式的理解吧。 作 者 于太原万达龙湖广场 2017 年7 月7 日

目录

目 录 第1章 绪论/1 1.1 计算几何的研究内容/1 1.2 曲线曲面描述数学的发展/2 1.3 矢量代数基础/4 1.3.1 矢量表示/4 1.3.2 矢量的运算/4 1.3.3 设计矢量类/5 1.4 曲线曲面的表示形式/8 1.4.1 显式表示/8 1.4.2 隐式表示/9 1.4.3 参数表示/9 1.5 连续性条件/13 1.5.1 参数连续性/13 1.5.2 几何连续性/13 1.6 预备知识/14 1.6.1 矢函数的导矢、切矢/14 1.6.2 曲线的自然参数方程/15 1.6.3 活动标架/16 1.6.4 曲率和挠率/18 1.6.5 型值点、插值、逼近、控制点/19 1.6.6 多项式基/20 1.7 本章小结/20 1.8 习题/20 第2章 图形程序设计基础/22 2.1 MFC上机操作步骤/22 2.1.1 应用程序向导/22 2.1.2 查看工程信息/25 2.2 基本绘图函数/27 2.2.1 修改单文档窗口显示参数/28 2.2.2 CDC派生类与GDI工具类/29 2.2.3 映射模式/30 2.2.4 使用GDI对象/33 2.2.5 绘制直线函数/35 2.2.6 位图操作函数/41 2.2.7 动画函数/45 2.3 双缓冲动画技术/47 2.4 三维变换与投影/52 2.4.1 三维坐标系/52 2.4.2 三维几何变换/54 2.4.3 三维物体的数据结构/58 2.4.4 投影变换/58 2.5 立方体线框模型/59 2.6 球体网格模型/62 2.7 本章小结/67 2.8 习题/67 第3章 三次插值曲线/69 3.1 三次样条曲线/69 3.1.1 三次样条函数的定义/69 3.1.2 三次样条函数的表达式/70 3.1.3 求解Mi/71 3.1.4 边界条件/71 3.1.5 追赶法求解三对角阵/73 3.1.6 绘制曲线/74 3.1.7 算法/74 3.2 参数样条曲线/76 3.2.1 三次参数样条的定义/76 3.2.2 三次参数样条函数的表达式/77 3.2.3 边界条件/78 3.2.4 算法/79 3.3 Hermite插值曲线/83 3.3.1 Hermite基矩阵/83 3.3.2 Cardinal曲线/85 3.3.3 Cardinal算法/86 3.4 本章小结/88 3.5 习题/88 第4章 Bezier曲线曲面/90 4.1 Bezier曲线的定义与性质/91 4.1.1 Bezier曲线的定义/91 4.1.2 Bernstein基函数的性质/93 4.1.3 Bezier曲线的性质/93 4.2 Bezier曲线的几何作图法/97 4.2.1 de Casteljau递推公式/98 4.2.2 de Casteljau几何作图法/98 4.3 Bezier曲线的拼接/100 4.4 Bezier曲线的升阶与降阶/105 4.4.1 Bezier曲线的升阶/105 4.4.2 Bezier曲线的降阶/106 4.5 Bezier曲面/106 4.5.1 张量积曲面/106 4.5.2 Bezier曲面的定义/107 4.5.3 双三次Bezier曲面的定义/107 4.5.4 双三次Bezier曲面片的拼接/112 4.6 双三次Bezier曲面片绘制犹他茶壶/119 4.6.1 犹他茶壶整体轮廓线/123 4.6.2 三维旋转体的生成原理/123 4.6.3 绘制壶体/128 4.6.4 绘制壶盖/129 4.6.5 绘制壶底/129 4.6.6 绘制壶柄/130 4.6.7 绘制壶嘴/131 4.7 有理Bezier曲线/133 4.7.1 有理Bezier曲线定义/134 4.7.2 有理一次Bezier曲线/134 4.7.3 有理二次Bezier曲线/135 4.7.4 有理Bezier曲线的升阶和降阶/138 4.7.5 有理Bezier曲面/140 4.8 本章小结/147 4.9 习题/147 第5章 B样条曲线曲面/151 5.1 B样条基函数的递推定义及其性质/151 5.1.1 B样条的递推定义/151 5.1.2 B样条基函数的性质/155 5.1.3 B样条基函数算法/155 5.2 B样条曲线定义/156 5.2.1 局部性质/157 5.2.2 定义域及分段表示/158 5.2.3 B样条曲线的分类/159 5.3 均匀B样条曲线/160 5.3.1 二次均匀B样条曲线/160 5.3.2 三次均匀B样条曲线/166 5.3.3 B样条曲线造型灵活性/170 5.4 准均匀B样条曲线/171 5.5 分段Bezier曲线/172 5.5 非均匀B样条曲线/173 5.5.1 Riesenfeld算法/173 5.5.2 Hartley-Judd算法/177 5.6 重节点对B样条基函数的影响/179 5.6.1 重节点对B样条基函数的影响/179 5.6.2 重节点对B样条曲线的影响/180 5.7 高次B样条曲线/180 5.8 节点插入/182 5.9 B样条曲面/186 5.9.1 B样条曲面的定义/186 5.9.2 双三次均匀B样条曲面/186 5.9.3 非均匀双三次B样条曲面/191 5.10 本章小结/200 5.11 习题/200 第6章 NURBS曲线曲面/203 6.1 NURBS曲线的定义及几何性质/204 6.1.1 NURBS曲线方程的三种等价表示/204 6.1.2 NURBS曲线三种表示方式之间的关系/207 6.1.3 NURBS曲线的几何性质/209 6.2 权因子对NURBS曲线形状的影响/210 6.2.1 投影变换中的交比/210 6.2.2 权因子的几何意义/211 6.3 NURBS曲线的节点插入/214 6.4 圆弧的NURBS表示/218 6.4.1 0 <θ≤90°圆弧的NURBS表示/218 6.4.2 90°≤θ≤180°圆弧的NURBS表示/221 6.4.3 180°≤θ≤270°圆弧的NURBS表示/223 6.4.4 270°≤θ≤360°圆弧的NURBS表示/224 6.5 NURBS曲面/226 6.5.1 NURBS曲面的定义/226 6.5.2 NURBS曲面权因子的几何意义/235 6.5.3 NURBS曲面的性质/236 6.6 一般曲面的NURBS表示/237 6.6.1 双线性曲面/237 6.6.2 一般柱面/238 6.6.3 旋转面/239 6.7 NURBS曲面绘制花瓶/243 6.7.1 知识要点/243 6.7.2 案例描述/243 6.7.3 设计原理/243 6.7.4 算法设计/244 6.7.5 程序代码/244 6.7.6 案例总结/247 6.8 本章小结/248 6.9 习题/248 附录A /252 参考文献 /293

作者简介

孔令德,太原工业学院计算机系系主任,长期从事教育管理与计算机图形学、多媒体等课程的教学工作,著有《计算机图形学》、《大学计算机基础》等教材。

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个