书籍详情
3D数学基础:图形与游戏开发
作者:(美)邓恩(Dunn,F.),(美)帕贝利(Parberry,I.) 著,史银雪,陈洪,王荣静 译,北京递归开元教育科技有限公司 审校;史银雪译
出版社:清华大学出版社
出版时间:2005-07-01
ISBN:9787302109464
定价:¥42.00
购买这本书可以去
内容简介
本书主要研究隐藏在3D几何世界背后的数学问题。3D数学是一门与计算几何相关的学科,计算几何则是研究怎样用数值方法解决几何问题的学科。3D数学和计算几何广泛应用在那些使用计算机来模拟3D世界的领域,如图形学、游戏、仿真、机器人技术、虚拟现实和动画等。本书涵盖了理论知识和C++实现代码。理论部分解释3D中数学和几何之间的关系,列出的技巧与公式可以当做参考手册以方便查找。实现部分演示了怎样用代码来实现这些理论概念。编程示例语言使用的是C++,实际上,本书的理论知识能通过任何编程语言实现。本书主要介绍了基本的3D数学概念,这对电脑游戏开发人员和编程人员来说尤为重要。作者详尽地讨论了数学理论,并在必要时提供几何说明,帮助读者形成直观的3D感。书中还提供了将理论应用于实践的C++类,并且在每章结尾处提供练习。本书内容:·介绍了基础概念,如向量、坐标空间、矩阵、变换、欧拉角、齐次坐标空间、几何图元、相交性检测和三角网格。·讨论了3D中的方位,包括四元数和对不同表示技术之间的优劣比较。·描述了数学和几何的实际应用示例,提供了一些C++类和不同的矩阵类,每个类都完成特定的几何任务。·所有基本变换矩阵的完整来历。
作者简介
Fletcher Dunn,是著名游戏开发公司Terminal Reality的主要开发人员,所参与开发的游戏包括《4×4DVO 2)、《夜曲》(Noturne),并且是《吸血莱恩》(BloodRayne)的主要负责人。他所开发的游戏遍及家用PC机的Windows、Machintosh、Dreamcast、PSⅡ、Xbox和GameCube几种主流平台。Ian Parberry,是北德克萨斯大学计算机科学系的教授,在国际上被公认为是教授DirectX游戏开发的顶级专家之一。
目录
第1章 简介
1.1 什么是3D数学
1.2 为什么选择本书
1.3 阅读本书需要的基础知识
1.4 概览
第2章 笛卡尔坐标系统
2.1 1D数学
2.2 2D笛卡尔数学
2.2.1 笛卡尔坐标系的实例:假想中的笛卡尔城
2.2.2 任意2D坐标系
2.2.3 在2D笛卡尔坐标系中定位点
2.3 从2D到3D
2.3.1 第三个维度,第三个轴
2.3.2 在3D笛卡尔坐标系中定位点
2.3.3 左手坐标系与右手坐标系
2.3.4 本书的重要约定
2.4 练习
第3章 多坐标系
3.1 为什么要使用多坐标系
3.2 一些有用的坐标系
3.2.1 世界坐标系
3.2.2 物体坐标系
3.2.3 摄像机坐标系
3.2.4 惯性坐标系
3.3 嵌套式坐标系
3.4 描述坐标系
3.5 坐标系转换
3.6 练习
第4章 向量
4.1 向量——数学定义
4.1.1 向量与标量
4.1.2 向量的维度
4.1.3 记法
4.2 向量——几何定义
4.2.1 向量的形式
4.2.2 位置与位移
4.2.3 向量的表达
4.2.4 将向量表示为位移序列
4.3 向量与点
4.3.1 相对位置
4.3.2 点和向量的关系
4.4 练习
第5章 向量运算
5.1 线性代数与几何
5.2 符号约定
5.3 零向量
5.4 负向量
5.4.1 运算法则
5.4.2 几何解释
5.5 向量大小(长度或模)
5.5.1 运算法则
5.5.2 几何解释
5.6 标量与向量的乘法
5.6.1 运算法则
5.6.2 几何解释
5.7 标准化向量
5.7.1 运算法则
5.7.2 几何解释
5.8 向量的加法和减法
5.8.1 运算法则
5.8.2 几何解释
5.8.3 一个点到另一个点的向量
5.9 距离公式
5.10 向量点乘
5.10.1 运算法则
5.10.2 几何解释
5.10.3 向量投影
5.11 向量叉乘
5.11.1 运算法则
5.11.2 几何解释
5.12 线性代数公式
5.13 练习
第6章 3D向量类
6.1 类接口
6.2 Vector3类
6.3 设计决策
6.3.1 float与double
6.3.2 运算符重载
6.3.3 仅提供最重要的操作
6.3.4 不要重载过多的运算符
6.3.5 使用const成员函数
6.3.6 使用const引用参数
6.3.7 成员函数与非成员函数
6.3.8 无缺省初始化
6.3.9 不要使用虚函数
6.3.10 不要使用信息屏蔽
6.3.11 全局常量:零
6.3.12 不存在“Point3”类
6.3.13 关于优化
第7章 矩阵
7.1 矩阵——数学定义
7.1.1 矩阵的维度和记法
7.1.2 方阵
7.1.3 向量作为矩阵使用
7.1.4 转置
7.1.5 标量和矩阵的乘法
7.1.6 矩阵乘法
7.1.7 向量与矩阵的乘法
7.1.8 行向量与列向量
7.2 矩阵——几何解释
7.2.1 矩阵是怎样变换向量的
7.2.2 矩阵的形式
7.2.3 总结
7.3 练习
第8章 矩阵和线性变换
8.1 变换物体与变换坐标系
8.2 旋转
8.2.1 2D中的旋转
8.2.2 3D中绕坐标轴的旋转
8.2.3 3D中绕任意轴的旋转
8.3 缩放
8.3.1 沿坐标轴的缩放
8.3.2 沿任意方向缩放
8.4 正交投影
8.4.1 向坐标轴或平面上投影
8.4.2 向任意直线或平面投影
8.5 镜像
8.6 切变
8.7 变换的组合
8.8 变换分类
8.8.1 线性变换
8.8.2 仿射变换
8.8.3 可逆变换
8.8.4 等角变换
8.8.5 正交变换
8.8.6 刚体变换
8.8.7 变换类型小结
8.9 练习
第9章 矩阵的更多知识
9.1 矩阵的行列式
9.1.1 线性运算法则
9.1.2 几何解释
9.2 矩阵的逆
9.2.1 运算法则
9.2.2 几何解释
9.3 正交矩阵
9.3.1 运算法则
9.3.2 几何解释
9.3.3 矩阵正交化
9.4 4*4齐次矩阵
9.4.1 4D齐次空间
9.4.2 4*4平移矩阵
9.4.3 一般仿射变换
9.4.4 透视投影
9.4.5 小孔成像
9.4.6 使用4*4矩阵进行透视投影
9.5 练习
第10章 3D中的方位与角位移
10.1 什是方位?
10.2 矩阵形式
10.2.1 用哪个矩阵
10.2.2 矩阵形式的优点
10.2.3 矩阵形式的缺点
10.2.4 小结
10.3 欧拉角
10.3.1 什么是欧拉角
10.3.2 关于欧拉角的其他约定
10.3.3 欧拉角的优点
10.3.4 欧拉角的缺点
10.3.5 总结
10.4 四元数
10.4.1 四元数记法
10.4.2 四元数与复数
10.4.3 四元数和轴一角对
10.4.4 负四元数
10.4.5 单位四元数
10.4.6 四元数的模
10.4.7 四元数共轭和逆
10.4.8 四元数乘法(叉乘)
10.4.9 四元数“差”
10.4.10 四元数点乘
10.4.11 四元数的对数、指数和标量乘运算
10.4.12 四元数求幂
10.4.13 四元数插值——“slerp”
10.4.14 四元数样条——“squad”
10.4.15 四元数的优点和缺点
10.5 各方法比较
10.6 表达形式之间的转换
10.6.1 从欧拉角转换到矩阵
10.6.2 从矩阵转换到欧拉角
10.6.3 从四元数转换到矩阵
10.6.4 从矩阵转换到四元数
10.6.5 从欧拉角转换到四元数
10.6.6 从四元数转换到欧拉角
10.7 练习
第11章 C++实现
11.1 概述
11.2 EulerAngles类
11.3 Quatemion类
11.4 RotationMatrix类
11.5 Matrix4x3类
第12章 几何图元
12.1 表示方法
12.1.1 隐式表示
12.1.2 参数形式表示
12.1.3 “直接”形式表示
12.1.4 自由度
12.2 直线和射线
12.2.1 两点表示法
12.2.2 射线的参数形式
12.2.3 特殊的2D直线表示方法
12.2.4 在不同表示方法问转换
12.3 球和圆
12.4 矩形边界框
12.4.1 AABB的表达方法
12.4.2 计算AABB
12.4.3 AABB与边界球
12.4.4 变换AABB
12.5 平面
12.5.1 平面方程——隐式定义
12.5.2 用三个点定义
12.5.3 多于三个点的“最佳”平面
12.5.4 点到平面的距离
12.6 三角形
12.6.1 基本性质
12.6.2 面积
12.6.3 重心坐标空间
12.6.4 特殊点
12.7 多边形
12.7.1 简单多边形与复杂多边形
12.7.2 自相交多边形
12.7.3 凸多边形与凹多边形
12.7.4 三角分解和扇形分解
12.8 练习
第13章 几何检测
13.1 2D隐式直线上的最近点
13.2 参数射线上的最近点
13.3 平面上的最近点
13.4 圆或球上的最近点
13.5 AABB上的最近点
13.6 相交性检测
13.7 在2D中两条隐式直线的相交性检测
13.8 在3D中两条射线的相交性检测
13.9 射线和平面的相交性检测
13.10 AABB和平面的相交性检测
13.11 三个平面间的相交性检测
13.12 射线和圆/球的相交性检测
13.13 两个圆/球的相交性检测
13.14 球和AABB的相交性检测
13.15 球和平面的相交性检测
13.16 射线和三角形的相交性检测
13.17 射线和AABB的相交性检测
13.18 两个AABB的相交性检测
13.19 其他种类的检测
13.20 AABB3类
13.21 练习
第14章 三角网格
14.1 表示网格
14.1.1 索引三角网格
14.1.2 高级技术
14.1.3 针对渲染的特殊表达
14.1.4 顶点缓存
14.1.5 三角带
14.1.6 三角扇
14.2 额外信息
14.2.1 纹理映射坐标
14.2.2 表面法向量
14.2.3 光照值
14.3 拓扑与一致性
14.4 三角网格操作
14.4.1 逐片操作
14.4.2 焊接顶点
14.4.3 面拆分
14.4.4 边缩坍
14.4.5 网格消减
14.5 C++三角网格类
第15章 图形数学
15.1 图形管道概述
15.2 设定视图参数
15.2.1 指定输出窗口
15.2.2 像素纵横比
15.2.3 视锥
15.2.4 视场与缩放
15.3 坐标空间
15.3.1 模型与世界空间
15.3.2 摄像机空间
15.3.3 裁剪空间
15.3.4 屏幕空间
15.4 光照与雾化
15.4.1 色彩的数学
15.4.2 光源
15.4.3 标准光照方程——概述
15.4.4 镜面反射分量
15.4.5 漫反射分量
15.4.6 环境光分量
15.4.7 光的衰减
15.4.8 光照方程——合成
15.4.9 雾化
15.4.10 flat着色与Gourand着色
15.5 缓存
15.6 纹理映射
15.7 几何体的生成与提交
15.7.1 LOD选择与渐进式生成
15.7.2 向API投送儿何体
15.8 变换和光照
15.8.1 变换到裁剪空间
15.8.2 顶点光照
15.9 背面剔除与裁剪
15.9.1 背面剔除
15.9.2 裁剪
15.10 光栅化
第16章 可见性检测
16.1 包围体检测
16.1.1 基于视锥的检测
16.1.2 遮断检测
16.2 空间分割技术
16.3 网格系统
16.4 叫叉树和八义树
16.5 BSP树
16.5.1 经典BSP
16.5.2 任意分割面
16.6 遮断剔除
16.6.1 潜在可见集
16.6.2 Portal技术
第17章后记
附录A 简单的数学概念
A.1 求和记法
A.2 角度,度和弧度
A.3 三角函数
A.4 三角公式
附录B 参考文献
1.1 什么是3D数学
1.2 为什么选择本书
1.3 阅读本书需要的基础知识
1.4 概览
第2章 笛卡尔坐标系统
2.1 1D数学
2.2 2D笛卡尔数学
2.2.1 笛卡尔坐标系的实例:假想中的笛卡尔城
2.2.2 任意2D坐标系
2.2.3 在2D笛卡尔坐标系中定位点
2.3 从2D到3D
2.3.1 第三个维度,第三个轴
2.3.2 在3D笛卡尔坐标系中定位点
2.3.3 左手坐标系与右手坐标系
2.3.4 本书的重要约定
2.4 练习
第3章 多坐标系
3.1 为什么要使用多坐标系
3.2 一些有用的坐标系
3.2.1 世界坐标系
3.2.2 物体坐标系
3.2.3 摄像机坐标系
3.2.4 惯性坐标系
3.3 嵌套式坐标系
3.4 描述坐标系
3.5 坐标系转换
3.6 练习
第4章 向量
4.1 向量——数学定义
4.1.1 向量与标量
4.1.2 向量的维度
4.1.3 记法
4.2 向量——几何定义
4.2.1 向量的形式
4.2.2 位置与位移
4.2.3 向量的表达
4.2.4 将向量表示为位移序列
4.3 向量与点
4.3.1 相对位置
4.3.2 点和向量的关系
4.4 练习
第5章 向量运算
5.1 线性代数与几何
5.2 符号约定
5.3 零向量
5.4 负向量
5.4.1 运算法则
5.4.2 几何解释
5.5 向量大小(长度或模)
5.5.1 运算法则
5.5.2 几何解释
5.6 标量与向量的乘法
5.6.1 运算法则
5.6.2 几何解释
5.7 标准化向量
5.7.1 运算法则
5.7.2 几何解释
5.8 向量的加法和减法
5.8.1 运算法则
5.8.2 几何解释
5.8.3 一个点到另一个点的向量
5.9 距离公式
5.10 向量点乘
5.10.1 运算法则
5.10.2 几何解释
5.10.3 向量投影
5.11 向量叉乘
5.11.1 运算法则
5.11.2 几何解释
5.12 线性代数公式
5.13 练习
第6章 3D向量类
6.1 类接口
6.2 Vector3类
6.3 设计决策
6.3.1 float与double
6.3.2 运算符重载
6.3.3 仅提供最重要的操作
6.3.4 不要重载过多的运算符
6.3.5 使用const成员函数
6.3.6 使用const引用参数
6.3.7 成员函数与非成员函数
6.3.8 无缺省初始化
6.3.9 不要使用虚函数
6.3.10 不要使用信息屏蔽
6.3.11 全局常量:零
6.3.12 不存在“Point3”类
6.3.13 关于优化
第7章 矩阵
7.1 矩阵——数学定义
7.1.1 矩阵的维度和记法
7.1.2 方阵
7.1.3 向量作为矩阵使用
7.1.4 转置
7.1.5 标量和矩阵的乘法
7.1.6 矩阵乘法
7.1.7 向量与矩阵的乘法
7.1.8 行向量与列向量
7.2 矩阵——几何解释
7.2.1 矩阵是怎样变换向量的
7.2.2 矩阵的形式
7.2.3 总结
7.3 练习
第8章 矩阵和线性变换
8.1 变换物体与变换坐标系
8.2 旋转
8.2.1 2D中的旋转
8.2.2 3D中绕坐标轴的旋转
8.2.3 3D中绕任意轴的旋转
8.3 缩放
8.3.1 沿坐标轴的缩放
8.3.2 沿任意方向缩放
8.4 正交投影
8.4.1 向坐标轴或平面上投影
8.4.2 向任意直线或平面投影
8.5 镜像
8.6 切变
8.7 变换的组合
8.8 变换分类
8.8.1 线性变换
8.8.2 仿射变换
8.8.3 可逆变换
8.8.4 等角变换
8.8.5 正交变换
8.8.6 刚体变换
8.8.7 变换类型小结
8.9 练习
第9章 矩阵的更多知识
9.1 矩阵的行列式
9.1.1 线性运算法则
9.1.2 几何解释
9.2 矩阵的逆
9.2.1 运算法则
9.2.2 几何解释
9.3 正交矩阵
9.3.1 运算法则
9.3.2 几何解释
9.3.3 矩阵正交化
9.4 4*4齐次矩阵
9.4.1 4D齐次空间
9.4.2 4*4平移矩阵
9.4.3 一般仿射变换
9.4.4 透视投影
9.4.5 小孔成像
9.4.6 使用4*4矩阵进行透视投影
9.5 练习
第10章 3D中的方位与角位移
10.1 什是方位?
10.2 矩阵形式
10.2.1 用哪个矩阵
10.2.2 矩阵形式的优点
10.2.3 矩阵形式的缺点
10.2.4 小结
10.3 欧拉角
10.3.1 什么是欧拉角
10.3.2 关于欧拉角的其他约定
10.3.3 欧拉角的优点
10.3.4 欧拉角的缺点
10.3.5 总结
10.4 四元数
10.4.1 四元数记法
10.4.2 四元数与复数
10.4.3 四元数和轴一角对
10.4.4 负四元数
10.4.5 单位四元数
10.4.6 四元数的模
10.4.7 四元数共轭和逆
10.4.8 四元数乘法(叉乘)
10.4.9 四元数“差”
10.4.10 四元数点乘
10.4.11 四元数的对数、指数和标量乘运算
10.4.12 四元数求幂
10.4.13 四元数插值——“slerp”
10.4.14 四元数样条——“squad”
10.4.15 四元数的优点和缺点
10.5 各方法比较
10.6 表达形式之间的转换
10.6.1 从欧拉角转换到矩阵
10.6.2 从矩阵转换到欧拉角
10.6.3 从四元数转换到矩阵
10.6.4 从矩阵转换到四元数
10.6.5 从欧拉角转换到四元数
10.6.6 从四元数转换到欧拉角
10.7 练习
第11章 C++实现
11.1 概述
11.2 EulerAngles类
11.3 Quatemion类
11.4 RotationMatrix类
11.5 Matrix4x3类
第12章 几何图元
12.1 表示方法
12.1.1 隐式表示
12.1.2 参数形式表示
12.1.3 “直接”形式表示
12.1.4 自由度
12.2 直线和射线
12.2.1 两点表示法
12.2.2 射线的参数形式
12.2.3 特殊的2D直线表示方法
12.2.4 在不同表示方法问转换
12.3 球和圆
12.4 矩形边界框
12.4.1 AABB的表达方法
12.4.2 计算AABB
12.4.3 AABB与边界球
12.4.4 变换AABB
12.5 平面
12.5.1 平面方程——隐式定义
12.5.2 用三个点定义
12.5.3 多于三个点的“最佳”平面
12.5.4 点到平面的距离
12.6 三角形
12.6.1 基本性质
12.6.2 面积
12.6.3 重心坐标空间
12.6.4 特殊点
12.7 多边形
12.7.1 简单多边形与复杂多边形
12.7.2 自相交多边形
12.7.3 凸多边形与凹多边形
12.7.4 三角分解和扇形分解
12.8 练习
第13章 几何检测
13.1 2D隐式直线上的最近点
13.2 参数射线上的最近点
13.3 平面上的最近点
13.4 圆或球上的最近点
13.5 AABB上的最近点
13.6 相交性检测
13.7 在2D中两条隐式直线的相交性检测
13.8 在3D中两条射线的相交性检测
13.9 射线和平面的相交性检测
13.10 AABB和平面的相交性检测
13.11 三个平面间的相交性检测
13.12 射线和圆/球的相交性检测
13.13 两个圆/球的相交性检测
13.14 球和AABB的相交性检测
13.15 球和平面的相交性检测
13.16 射线和三角形的相交性检测
13.17 射线和AABB的相交性检测
13.18 两个AABB的相交性检测
13.19 其他种类的检测
13.20 AABB3类
13.21 练习
第14章 三角网格
14.1 表示网格
14.1.1 索引三角网格
14.1.2 高级技术
14.1.3 针对渲染的特殊表达
14.1.4 顶点缓存
14.1.5 三角带
14.1.6 三角扇
14.2 额外信息
14.2.1 纹理映射坐标
14.2.2 表面法向量
14.2.3 光照值
14.3 拓扑与一致性
14.4 三角网格操作
14.4.1 逐片操作
14.4.2 焊接顶点
14.4.3 面拆分
14.4.4 边缩坍
14.4.5 网格消减
14.5 C++三角网格类
第15章 图形数学
15.1 图形管道概述
15.2 设定视图参数
15.2.1 指定输出窗口
15.2.2 像素纵横比
15.2.3 视锥
15.2.4 视场与缩放
15.3 坐标空间
15.3.1 模型与世界空间
15.3.2 摄像机空间
15.3.3 裁剪空间
15.3.4 屏幕空间
15.4 光照与雾化
15.4.1 色彩的数学
15.4.2 光源
15.4.3 标准光照方程——概述
15.4.4 镜面反射分量
15.4.5 漫反射分量
15.4.6 环境光分量
15.4.7 光的衰减
15.4.8 光照方程——合成
15.4.9 雾化
15.4.10 flat着色与Gourand着色
15.5 缓存
15.6 纹理映射
15.7 几何体的生成与提交
15.7.1 LOD选择与渐进式生成
15.7.2 向API投送儿何体
15.8 变换和光照
15.8.1 变换到裁剪空间
15.8.2 顶点光照
15.9 背面剔除与裁剪
15.9.1 背面剔除
15.9.2 裁剪
15.10 光栅化
第16章 可见性检测
16.1 包围体检测
16.1.1 基于视锥的检测
16.1.2 遮断检测
16.2 空间分割技术
16.3 网格系统
16.4 叫叉树和八义树
16.5 BSP树
16.5.1 经典BSP
16.5.2 任意分割面
16.6 遮断剔除
16.6.1 潜在可见集
16.6.2 Portal技术
第17章后记
附录A 简单的数学概念
A.1 求和记法
A.2 角度,度和弧度
A.3 三角函数
A.4 三角公式
附录B 参考文献
猜您喜欢