本书系统介绍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 日