标题：3D计算机图形学(OpenGL版)
图书信息
作者：Samuel R.Buss著、唐龙等译 图书详细信息： ISBN：9787302136040 定价：45元 印次：1-2 装帧：平装 印刷日期：2007-11-28
图书简介
本书计划的形成是依据我作为一个数学学术研究者的个人经验和在多个应用计算机项目，在教授这门课程中，我确信需要这样一本书，来介绍计算机图形学的基础数学理论。 写此书的另一动力是我涉及一些虚拟现实和计算机游戏的项目。本书中所包含的许多话题作为主要内容提出，其原因是我发现它们常用在计算机游戏应用程序中。当前计算机游戏和虚拟现实应用程序是技术上要求很多的软件项目：这些应用程序要求软件能够显示令人信服的三维环境。通常，应用程序必须保持跟上多个目标的运动；维持住主要目标的有关光照，色彩和纹理等信息；并在屏幕上以每秒30或60帧显示。此外，需要相当高的艺术性和创造性的技巧来做成为一种适宜的三维环境。毫不奇怪，这要求由大量程序员、艺术家和设计师进行成熟的软件开发。  
图书前言
最近10年，计算机图形学有着异常的发展，从二维（2D）图形进步到复杂的、高质量的三维（3D）的环境。在娱乐方面，电影和计算机游戏中广泛地使用计算机图形学。动画片发展到完全靠计算机制作。甚至非动画片也主要依靠计算机图形学去开发特定的效果。例如，20世纪70年代中期电影“星球大战”的成功就是个证明。计算机图形学在非娱乐方面也有重要应用。例如，在学习训练中经常使用虚拟现实系统。对于科学计算可视化和计算机辅助设计（CAD），计算机图形学是一种不可缺少的工具。我们需要有很好的方法，以便直观地显示大量数据集和大规模的科学仿真结果。自从计算机出现以来，20世纪60年代初就开始热起来的计算机图形学的艺术和科学已经很有进展。计算机图形学发展成一个丰富多彩，深奥且有吸引力的领域。本书的目的瞄准计算机图形学的数学基础，并用OpenGL编程做具体介绍。我深信对于计算机图形学的任何一种高级应用，懂得数学的基础知识都是很重要的。为此，本书试图做到完全覆盖计算机图形学的基础数学知识。此原则指导着本书的选材，选用对计算机图形学的从业者，尤其是对软件开发有实际重要意义的话题。我希望本书对用在该领域的标准工具，尤其是对这些工具背后的数学理论，做全面的介绍。关于本书本书计划的形成是依据我作为一个数学学术研究者的个人经验和在多个应用计算机项目，包括计算机游戏和虚拟现实等项目的实践。当我在San Digo加州大学（UCSD）给一个数学班讲授计算机图形学和几何时，就开始写本书。构成该课程的内容包括介绍用OpenGL编写三维图形学程序和计算机图形学的数学基础知识。在教授这门课程中，我确信需要这样一本书，来介绍计算机图形学的基础数学理论。写此书的另一动力是我涉及一些虚拟现实和计算机游戏的项目。本书中所包含的许多话题作为主要内容提出，其原因是我发现它们常用在计算机游戏应用程序中。当前计算机游戏和虚拟现实应用程序是技术上要求很多的软件项目：这些应用程序要求软件能够显示令人信服的三维环境。通常，应用程序必须保持跟上多个目标的运动；维持住主要目标的有关光照，色彩和纹理等信息；并在屏幕上以每秒30或60帧显示。此外，需要相当高的艺术性和创造性的技巧来做成为一种适宜的三维环境。毫不奇怪，这要求由大量程序员、艺术家和设计师进行成熟的软件开发。3D计算机图形学要求很宽广的数学，这或许有点令人感到惊讶。然而，这是客观存在的事实。而且，数学趋向于高雅和跨学科。计算机图形学需用数学知识使来自各个领域的构造和方法组成在一起。这些领域包括：几何学、计算方法、线性代数、数值分析、抽象代数、数据结构和算法。实际上，计算机图形学是数学的组合性和优雅性应用的最好佐证。本书呈现了应用和理论主题的结合。在更多的地方，我建议采用OpenGL，它是一种对3D图形非常有用的、自由的、跨平台的编程环境。本书给出了可以免费因特网下载的OpenGL程序的C和C++代码，并介绍OpenGL如何实现本书所讨论的许多数学概念。本书还描述了一个光线追踪软件包；该软件包也可以从因特网络下载。在理论方面，本书强调计算机图形学的数学基础，远超过我所见到的任何其他教材。对于有可能使用的诸如OpenGL或Direct3D这类工具，或者稍微扩展，CAD程序，我深信计算机图形学的数学基础知识都是相当重要的。在本书中，所选择数学主题依据是它们对于图形学的重要性和相关性。当然，如果对计算机图形学很关键的概念，例如，等轴测坐标的投影几何表示，我会毫不犹豫地介绍。如果你要正确地使用计算机图形软件技术，良好的数学知识使无价的，如果你要开发新的或有创造性的使用计算机图形学，很好数学知识就更重要。如何使用本书本书侧重于作为教科书，作为自学的材料或是参考资料使用。特别强调建议你试运随本书提供的程序，写一些你自己的OpenGL程序。请注意，本书最好与一本介绍用OpenGL编程的书联系一起读。第1章引言，介绍计算机图形学的基本概念；绘制点、线和多边形；以多边形来造型；动画；OpenGL编程入门。第2章变换与视图，讨论绘制流水线，线性和仿射变换，二维和三维矩阵，平移和旋转，homogeneous坐标，在OpenGL中的变换，正交视图和透视变换，投影几何，像素化，Gouraud和扫描线插值，Bresenham 算法。第3章光照、亮度和着色，发表Phong光照模型；周围环境光，漫反射和镜面反射；在OpenGL中的光照和物质属性；Cook?Torrance光照模型。第4章均值与插值，提出线性插值；重心坐标，双线性插值，凸面，双曲线插值，球面的线性插值。这是较多数学的一章，带有在本书其他地方用到的许多工具。在初次读时，你也许希望跳过本章好多地方，当需要时再回来读。第5章纹理映射，讨论纹理和纹理坐标，映射，超采样和颤动，撞击映射，环境映射，以及OpenGL中的纹理映射。第6章色彩，色彩感知的发表，加和减色彩，RGB和HSL色彩的表达。第7章贝塞尔曲线，三阶和通用阶次的贝塞尔曲线；De Casteljau 方法；细分；分段贝塞尔曲线；Hermite 多项式；贝塞尔曲面片；OpenGL中的贝塞尔曲线；有理贝塞尔曲线；圆锥曲线段，阶次的提高；Catmull?Rom, Bessel?Overhauser插值，紧张?连续性?斜偏的样条；贝塞尔曲面插入。第8章B样条曲线，描述规则的和不规则的B样条及其特性，OpenGL中的B样条，de Boor 算法，Blossoms，平滑特性，有理的B样条（NURBS），圆锥形截面，结点插入，贝塞尔曲线的关系，以及用B样条曲线插入。本章混合有介绍性话题和较专业化话题。我们给全部证明，但建议在初次读时跳过这些证明。第9章光线跟踪，提出递归光线跟踪、反射和透射，分布式光线跟踪，逆向光线跟踪，还有逃离以及避免光线跟踪的技巧。第10章相交测试，描述与球面、平面、三角形，多边行及其他面的相交测试，和体边界寻址，还有修枝相交测试。第11章辐射度，给出路径，组成因子，以及辐射度公式；半立方体方法；Jacobi, Gauss?Seidel和Southwell重复方法 第12章动画与运动学，讨论关键帧，灵活地移入和灵活地移出，定方位表达方式，公式，插入公式，有关节刚性多形体的向前和反向的运动学。附录A数学背景，复习矢量，矩阵，线性代数和计算。附录B射线追踪软件包，介绍光线跟踪软件包。该软件可免费下载。
图书目录
第1章引言11.1显示的模型11.1.1矩形的像素矩阵11.1.2矢量图形21.1.3多边形的造型31.2坐标、点、线和多边形41.2.1坐标系统41.2.2在OpenGL中几何形体41.3适合动画的双缓冲区13第2章变换与观察152.1二维空间中的变换162.1.1基本定义172.1.2线性变换的矩阵表示182.1.3刚性变换和旋转202.1.4齐次坐标232.1.5仿射变换的矩阵表示232.1.6OpenGL中的二维变换252.1.7再讨论组合变换282.1.8二维投影几何学*292.2三维空间中的变换302.2.1从二维空间到三维空间312.2.2OpenGL中的变换矩阵322.2.3旋转矩阵的推导362.2.4欧拉（Euler）定理392.2.5三维投影几何学*402.3观察变换与透视412.3.1正投影变换432.3.2透视变换432.3.3直线映射到直线472.3.4投影的另一个应用： 阴影472.3.5OpenGL 透视变换482.4映射到像素522.4.1Bresenham 算法552.4.2浮点数四舍五入的危险57第3章光照、亮度和着色603.1Phong光照模型613.1.1漫反射633.1.2镜面反射643.1.3环境反射和发射光663.1.4综合： 多种光源和颜色663.1.5Gouraud和Phong渲染673.1.6计算表面法向703.1.7仿射变换及法向量723.1.8OpenGL中的光照和材料属性733.2Cook?Torrance光照模型*783.2.1双向反射783.2.2Cook?Torrance模型概述*793.2.3微平面分布项*813.2.4几何表面遮蔽项813.2.5Fresnel项85第4章均值与插值894.1线性插值894.1.1两点之间的插值894.1.2加权平均和仿射组合904.1.3三个点的插值： 重心坐标924.2双线性和三线性插值964.2.1双线性插值964.2.2反向双线性插值1004.2.3三线性插值1044.3凸集和加权平均1054.4插值和齐次坐标1074.5双曲线插值1084.6球面线性插值109第5章纹理映射1125.1图像的纹理映射1125.1.1纹理插值1135.1.2纹理坐标值的确定1145.1.3MIP映射和反走样1175.1.4随机超采样1195.2凹凸贴图1205.3环境映射1235.4OpenGL中的纹理映射1245.4.1加载纹理数据1245.4.2指定纹理坐标1265.4.3颜色调制1265.4.4单独的高光1275.4.5管理多个纹理数据1285.4.6OpenGL中的环境映射128第6章彩色1316.1色彩感知1316.2色彩值的表示1336.2.1加色法和减色法1336.2.2RGB颜色的表示1346.2.3色调、饱和度和亮度135第7章贝塞尔曲线1397.1三次贝塞尔曲线1407.2De Casteljau算法1427.3递归细分算法1437.4分段贝塞尔曲线1467.5Hermite多项式1487.6任意次的贝塞尔曲线1497.7再谈de Casteljau算法1527.8再谈递归细分算法1537.9曲线的升阶1547.10贝塞尔曲面1567.10.1贝塞尔曲面的基本性质1567.10.2贝塞尔曲面片的拼接1587.11OpenGL中的贝塞尔曲线和曲面1607.11.1贝塞尔曲线1607.11.2贝塞尔曲面1627.12有理贝塞尔曲线1637.13用有理贝塞尔曲线表示圆锥曲线段1657.14旋转曲面1697.15使用贝塞尔曲线进行插值1717.15.1Catmull?Rom样条函数1727.15.2Bessel?Overhauser样条函数1737.15.3张力?连续性?偏移样条函数1757.16使用贝塞尔曲面进行插值★177第8章B样条曲线1828.1均匀三次B样条1838.2非均匀B样条1868.3非均匀B样条示例1888.4非均匀B样条的性质1938.5de Boor算法1968.6Blossoms算法1998.7B样条曲线的导数和光滑性2028.8节点插值2048.9贝塞尔曲线和B样条曲线2078.10升阶2088.11有理B样条和NURBS曲面2098.12OpenGL中的B样条和NURBS曲面2118.13B样条插值211第9章光线跟踪2149.1光线跟踪基础2159.1.1局部光照和反射光线2199.1.2透射光线2209.1.3算法整合2239.2高级光线跟踪技术2259.2.1分布式光线跟踪2259.2.2反向光线跟踪2319.3不使用光线跟踪的特殊效果232第10章相交测试23810.1有关射线的快速相交测试23910.1.1射线—球相交23910.1.2射线—平面相交24110.1.3射线—三角形相交24210.1.4射线—凸超多面体相交24410.1.5射线—圆柱体相交24710.1.6射线—二次曲面相交24810.1.7射线—贝塞尔面片相交24810.2相交测试的剪枝算法249第11章辐射度25311.1辐射度方程25511.1.1面片、光照强度和形状因子25511.1.2辐射度算法的高级描述25711.2形状因子的计算25811.2.1光线跟踪方法25911.2.2半立方体法26011.3解辐射度方程26211.3.1迭代方法26211.3.2雅可比(Jacobi)迭代26511.3.3高斯?塞德尔（Gauss?Seidel）迭代26511.3.4射击（shooting）法266第12章动画与运动学26812.1概述26812.1.1由传统动画发展而来的技术26812.1.2计算机动画27012.2动画中的位置27112.2.1渐进： 固定目标27112.2.2渐进： 移动目标27212.3方向的表示27312.3.1旋转矩阵27412.3.2偏转、倾斜和滚动27412.3.3四元组27612.3.4四元组的理论发展27712.3.5用四元组表示旋转27912.3.6四元组和旋转矩阵的转换28112.3.7四元组的插值28312.4运动学28412.4.1刚性连接体和关节28512.4.2前向运动学28612.4.3反向运动学，问题的提出28812.4.4反向运动学，寻找局部解290附录A数学背景知识295A.1预备知识295A.2向量和向量积296A.2.1R2中的向量296A.2.2R3中的向量299A.3矩阵300A.3.1R3中矩阵和向量的积301A.3.2行列式，逆矩阵和伴随矩阵302A.3.3线性子空间*302A.4多元微积分304A.4.1多元函数304A.4.2向量值函数305A.4.3多元向量值函数305附录B光线跟踪软件包307B.1介绍307B.2高层光线跟踪函数308B.3光线跟踪API311B.3.1指定光源311B.3.2定义相机和视窗312B.3.3按像素阵列工作314B.3.4定义材质314B.3.5定义可见物体315B.3.6可见的球316B.3.7可视的三角形和平行四边形317B.3.8可见的椭球318B.3.9可视的圆柱体318B.3.10可视的锥体320B.3.11可视的平行六面体321B.3.12可视的圆环322B.3.13可视的贝塞尔面片323B.3.14纹理映射325索引328[1]