前言
计算机图形学是计算机科学的一个重要分支,现在的计算机技术应用领域,例如计算机辅助设计(CAD)、计算机动画仿真、影视广告特效制作、电脑网络游戏、虚拟现实、三维扫描和打印以及人工智能技术等涉及图形图像的方面,都在直接或者间接地使用计算机图形学的理论和方法。那么,如何学习才能掌握计算机图形学这门学科呢?
作为一门计算机应用技术,计算机图形学具有较强的理论性和实践性。本书内容丰富,不仅介绍了计算机图形学这门学科的主要研究内容以及基本原理,也提供了大量的编程实践,理论与实践相结合是本书的重要特色,可以在一定程度上帮助读者开发真实的图形应用程序;该书不仅系统讲解了真实图形开发环境下使用的OpenGL技术,也提供了Web环境下的图形开发方法,可以使读者了解计算机图形学的应用趋势。
在结构安排上,本书分为两大部分。
第一部分为本书前9章内容,详细介绍了计算机图形学的主要研究内容、基本原理以及图形学的开发环境和编程实践。具体如下:
第1章 绪论
介绍了计算机图形学的基本概念、相关研究内容、应用领域、发展历史以及发展趋势。
第2章 图形开发工具及使用
详细介绍了图形开发工具VC++系统的开发流程、相关函数及集合的使用、基本像素点的绘制方法以及非模式对话框的交互式实现方法。
第3章 基本图形的生成
详细讲解了直线扫描转换生成的各种算法及实现、VC++的橡皮筋和双缓存交互技术、圆及圆弧的扫描转换、椭圆的扫描转换、多边形的扫描转换和填充、字符的表示、线宽和线型处理方法以及反走样技术。
第4章 裁剪
详细讲解了直线在矩形窗口的裁剪算法、多边形的裁剪(包括矩形及凸多边形裁剪窗口的裁剪和任意形状多边形的裁剪及实现)、圆的裁剪(包括圆形窗口的直线裁剪和任何多边形窗口对圆的裁剪及实现)以及字符裁剪。
第5章 图形变换
介绍了图形变换的数学基础,详细讲解了二维图形的矩阵变换、交互式对象拾取和捕捉技术、三维图形的矩阵变换、三维图形的线框拉伸造型方法、投影变换、三维图形的交互拾取以及透视投影变换。
第6章 消隐技术
介绍了消隐的相关概念,详细讲解了凸多面体的可见性判断方法和一般多面体的各种消隐算法,并对基于扫描线的消隐算法进行了详细分析和编程实现。
第7章 真实感图形绘制
介绍了颜色与光的基本知识,详细讲解了简单光照模型和复杂光照模型,并实现了简单光照模型的编程,讲解了纹理映射的实现原理。
第8章 曲线曲面
介绍了曲线曲面的参数表示方法以及相关概念,详细讲解了Bézier表示法、递推生成算法和Bézier曲面,详细讲解了B样条的定义、B样条曲线的递推定义,介绍了B样条曲线的绘制以及B样条曲面的拉伸造型方法,介绍了非均匀有理B样条NURBS方法。
第9章 计算机动画与仿真
介绍了动画的概念及基本原理、逐帧动画和实时动画实现方法,并对实时动画方法进行了编程实现。
这部分内容各章节之间理论独立,但是代码编程部分前后关联,并创建了一个集成的图形程序,因此,在练习这一部分的代码时,建议循序渐进,不要跳跃式学习。
本书第二部分为第10章和第11章,这两章各自独立,分别介绍了真实环境下计算机图形学应用程序接口(API)——OpenGL技术和Web环境下的图形开发技术,如果读者仅对OpenGL技术或者Web图形开发感兴趣,可以直接跳过本书前面的章节,学习这两章的内容。具体如下:
第10章 基于OpenGL的图形开发技术
详细讲解了VC++环境下OpenGL的配置方法、OpenGL基本图形及真实感图形绘制技术、OpenGL图像处理技术、OpenGL纹理映射技术以及OpenGL曲线曲面技术等。
第11章 Web图形开发技术
介绍了Web绘图技术所需的Html文档结构、JavaScript脚本语言和canvas功能标签,详细介绍了JavaScript语言生成基本图形的编程方法和基于WebGL的3D图形技术。
本书编程所用数据均由应用程序通过动态交互获取,而非提前设定,因此,最后的图形显示效果为实时的结果,这样,直接验证了书中算法的稳定性、可靠性和可行性。
本书的读者对象可以是在校本科生、研究生,也可以是希望学习和掌握计算机图形学的相关人员。本书可以作为计算机图形学的教材,也可以作为学习计算机编程的技术书籍。
本书第1~10章主要由李晓武编写,第11章主要由周晓雨编写。由李晓武担任主编,樊百琳和曹彤担任副主编,参编人员还有万静、杨皓、陈平、许倩、陈华和杨光辉等,他们还提出了非常宝贵的意见,在此一并致谢。除了已经列出的参考文献以外,还参考了其他相关图书和网上资料,无法一一列出,谨向所有作者表达谢意。本书的编写和出版得到了北京科技大学教材建设经费的资助,在此也表示感谢。
本书中编程实现的应用程序代码及其他相关资料可通过本书封底的二维码扫描下载。
由于作者水平有限,错漏之处在所难免,恳请读者批评指正。
编者
2018年4月于北京