第1部分 数学知识 2
第1章 数字 2
1.1 概述 2
1.2 数字的书写方式 2
1.2.1 整数、有理数和无理数 2
1.2.2 无理数和实数 3
1.2.3 数位串形式的数字 3
1.2.4 十进制、二进制和十六进制 5
1.3 数字在计算机中的表达方式 5
1.3.1 表达整数 6
1.3.2 有理数和无理数的表达方法 7
1.3.3 标准数字和计算数字 8
1.3.4 公共函数 9
1.3.5 舍入误差和性能 11
1.3.6 BigInteger类 11
1.4 本章练习 12
1.5 本章小结 12
第2章 数学运算 13
2.1 概述 13
2.2 分数 13
2.3 比例、比率以及百分比 20
2.3.1 数值范围间的映射 20
2.3.2 纸张尺寸 20
2.3.3 黄金比率 21
2.3.4 Fibonacci数列 22
2.3.5 滑块 22
2.3.6 百分比计算 23
2.3.7 复利计算 24
2.3.8 债务和利息 24
2.4 指数 25
2.4.1 指数计算 25
2.4.2 数字e和exp()函数 27
2.4.3 真实世界和物理学中的指数函数 27
2.5 对数 27
2.5.1 对数计算 28
2.5.2 通过对数简化计算 28
2.5.3 利用对数处理大数 29
2.6 本章练习 30
2.7 本章小结 30
第3章 代数运算 31
3.1 概述 31
3.2 基本的代数运算 31
3.2.1 变量、参数和常量 31
3.2.2 表达式和数据项 32
3.2.3 函数 32
3.2.4 函数表达方式 33
3.2.5 一一对应、反函数和多值函数 33
3.2.6 多项式 33
3.2.7 等式、公式和不等式 34
3.3 等式计算 34
3.3.1 等式配平 35
3.3.2 简化计算 35
3.3.3 符号和置换操作 36
3.3.4 对原问题进行求解 37
3.4 分解并求解二次等式(方程) 37
3.4.1 分解示例 38
3.4.2 因子和二次表达式 38
3.4.3 求解3次等式 40
3.4.4 求解联立方程 41
3.4.5 替换法求解联立方程 41
3.4.6 基于消去法的联立方程 43
3.4.7 方程组求解函数 44
3.5 函数和函数图 45
3.5.1 何为函数图 45
3.5.2 函数图的绘制和检测 47
3.5.3 函数图反映的数据 50
3.5.4 参数曲线和函数 51
3.6 本章练习 52
3.7 本章小结 52
第4章 几何学和三角学 53
4.1 概述 53
4.2 角度 53
4.2.1 角度和角度值 53
4.2.2 面积和π 55
4.2.3 弧度 56
4.3 三角形 56
4.3.1 三角形类型 56
4.3.2 通用三角形类型 57
4.3.3 直角三角形 58
4.3.4 毕达哥拉斯定理 58
4.3.5 毕达哥拉斯三元数 59
4.3.6 毕达哥拉斯定理推论 59
4.3.7 三角函数 60
4.3.8 三角恒等式 61
4.3.9 反三角函数 62
4.4 三角形计算 63
4.4.1 正弦和余弦定理 63
4.4.2 相似三角形 65
4.4.3 三角形面积 66
4.5 旋转和反射 66
4.5.1 转换 66
4.5.2 旋转对象某一角度 67
4.5.3 围绕中心位置的旋转操作 69
4.5.4 基于特定角度值的快速旋转 69
4.5.5 反射 69
4.5.6 sin()、cos()和圆周运动 70
4.6 本章练习 71
4.7 本章小结 71
第5章 向量 73
5.1 概述 73
5.2 基础知识 73
5.2.1 “指令”向量 73
5.2.2 向量算术 75
5.2.3 向量编程 76
5.2.4 法向量 77
5.2.5 真实世界中的向量和标量 78
5.3 基于向量的运动 78
5.3.1 通过向量描述形状 78
5.3.2 P和Q之间的运动 80
5.3.3 复杂的向量路径 82
5.3.4 奇异路径 83
5.4 向量计算 84
5.4.1 向量及其分量 84
5.4.2 标量积(点积) 85
5.4.3 向量方程 86
5.5 矩阵 89
5.5.1 矩阵基础知识 89
5.5.2 行列式 90
5.5.3 矩阵算术 91
5.5.4 基于转换的矩阵 93
5.6 本章练习 94
5.7 本章小结 95
第6章 微积分 96
6.1 概述 96
6.2 微分和积分 96
6.2.1 函数梯度 96
6.2.2 微分计算 98
6.2.3 应用示例 99
6.2.4 导数信息 100
6.2.5 对数和指数的微分运算 100
6.2.6 三角函数的微分运算 101
6.2.7 参数方程和偏导数 102
6.2.8 积分运算 103
6.3 微分方程 104
6.3.1 常微分方程的特征 104
6.3.2 求解线性ODE 105
6.4 近似方案 106
6.4.1 划界法 106
6.4.2 梯度方案 108
6.5 本章练习 110
6.6 本章小结 110
第2部分 物理学基本内容 114
第7章 加速度、质量和能量 114
7.1 概述 114
7.2 弹道学 114
7.2.1 加速和减速 114
7.2.2 基于恒定加速度的运动方程 115
7.2.3 基于重力的加速度 116
7.2.4 炮弹的运动行为 117
7.3 质量和动量 118
7.3.1 质量和惯性 118
7.3.2 动量计算 119
7.4 能量 119
7.4.1 能量类型 120
7.4.2 能量守恒 120
7.4.3 利用能量守恒求解弹道问题 121
7.5 本章练习 122
7.6 本章小结 123
第8章 简单形状之间的碰撞检测 124
8.1 概述 124
8.2 基本原则 124
8.3 圆形对象间的碰撞 125
8.3.1 圆形 125
8.3.2 移动的圆形和墙壁 126
8.3.3 静止圆和运动点 127
8.3.4 直线上的两个运动圆 128
8.3.5 以某一角度运动的两个圆 129
8.3.6 内嵌圆 130
8.3.7 碰撞点 131
8.4 正方形碰撞 131
8.4.1 正方形和矩形 132
8.4.2 静止矩形和运动点 133
8.4.3 同一角度碰撞的矩形 135
8.4.4 不同角度的两个矩形 137
8.4.5 碰撞点 138
8.5 椭圆形之间的碰撞 138
8.5.1 椭圆 138
8.5.2 通过坐标描述椭圆 139
8.5.3 平移操作 140
8.5.4 静态椭圆和动态点 141
8.5.5 两个椭圆之间的碰撞 142
8.5.6 碰撞点 142
8.6 不同形状对象间的碰撞 142
8.6.1 圆形和矩形之间的碰撞 142
8.6.2 碰撞点 143
8.7 本章练习 143
8.8 本章小结 144
第9章 碰撞处理方案 145
9.1 概述 145
9.2 处理单一碰撞行为 145
9.2.1 球体与墙面之间的碰撞 145
9.2.2 球体与运动的墙面发生碰撞 146
9.2.3 两个运动球体的碰撞 148
9.2.4 非弹性碰撞 149
9.3 处理多次碰撞行为 151
9.3.1 递归碰撞 151
9.3.2 同时碰撞 153
9.4 本章练习 154
9.5 本章小结 154
第10章 复杂形状间的碰撞检测 155
10.1 概述 155
10.2 复杂形状 155
10.2.1 位图和矢量图 155
10.2.2 定义复杂形状 156
10.2.3 碰撞图函数 157
10.2.4 参数函数 158
10.2.5 Bezier曲线和样条 158
10.2.6 Catmull-Rom曲线 159
10.2.7 可移动样条 160
10.2.8 凸形和凹形 161
10.2.9 确定一点是否位于几何形状中 162
10.3 某些合理性问题 164
10.3.1 计算复杂形状的前缘边 164
10.3.2 使用碰撞图 167
10.3.3 计算包围形状 170
10.4 内建方案 173
10.5 本章练习 174
10.6 本章小结 174
第11章 一款简单的撞球游戏 175
11.1 概述 175
11.2 模拟中的主要元素 175
11.2.1 定义撞球桌面 175
11.2.2 定义球体 177
11.2.3 定义物理参数 179
11.3 运行游戏 180
11.3.1 创建球杆 180
11.3.2 游戏主循环 181
11.3.3 基本的剔除操作 184
11.3.4 游戏逻辑 185
11.4 本章练习 186
11.5 本章小结 186
第3部分 复杂运动 188
第12章 力和牛顿定律 188
12.1 概述 188
12.2 作用力 188
12.2.1 牛顿第一定律 188
12.2.2 牛顿第二定律 189
12.2.3 牛顿第三定律 190
12.2.4 冲量 190
12.3 重力 191
12.3.1 万有引力定律 191
12.3.2 重力作用下的行星运动 191
12.3.3 稳定轨道 192
12.3.4 离心力和向心力 193
12.4 火箭和卫星 193
12.4.1 地球静止轨道 193
12.4.2 高速飞行的炮弹 194
12.5 本章练习 195
12.6 本章小结 195
第13章 角运动 196
13.1 概述 196
13.2 杠杆物理 196
13.2.1 转矩 196
13.2.2 转动惯量 198
13.2.3 惯性片状物体 199
13.3 旋转 200
13.3.1 芭蕾舞演员和旋转陀螺 200
13.3.2 旋转动能 201
13.4 旋转碰撞 202
13.4.1 旋转直线和圆形之间的碰撞检测 202
13.4.2 圆和运动直线 204
13.4.3 直线间的碰撞检测 206
13.4.4 两条旋转直线 209
13.4.5 处理角碰撞 210
13.5 向撞球游戏中加入旋转行为 212
13.6 本章练习 212
13.7 本章小结 213
第14章 摩擦力 214
14.1 概述 214
14.2 摩擦力的工作方式 214
14.2.1 摩擦系数 214
14.2.2 摩擦力和能量 216
14.2.3 空气阻力和临界下降速度 216
14.3 摩擦力和角运动 217
14.3.1 轮胎和牵引力 217
14.3.2 摩擦力和打滑现象 219
14.4 本章练习 220
14.5 本章小结 220
第15章 绳索、滑轮和传送带 221
15.1 概述 221
15.2 拉动对象 221
15.2.1 不可扩展的绳索 221
15.2.2 桌面上的绳索 222
15.2.3 绳索和圆周运动 222
15.2.4 滑轮 224
15.3 连续动量 225
15.3.1 传送带 225
15.3.2 火箭燃料 226
15.4 本章练习 227
15.5 本章小结 227
第16章 振荡现象 228
16.1 概述 228
16.2 弹簧 228
16.2.1 拉伸弹簧所产生的作用力 228
16.2.2 通过弹簧测量重量 229
16.3 简谐运动 230
16.3.1 简谐运动方程 230
16.3.2 其他SHM示例 231
16.3.3 参数计算 232
16.4 阻尼简谐运动 233
16.4.1 DHM方程 233
16.4.2 实际阻尼计算 234
16.5 弹簧的复杂性 236
16.5.1 共振与秋千 236
16.5.2 联接弹簧:链接运动 236
16.6 弹簧运动的计算过程 237
16.6.1 基于弹簧的作用力 237
16.6.2 非阻尼和非联接弹簧 238
16.6.3 纯DHM振荡 240
16.7 波 241
16.7.1 波运动 241
16.7.2 波类型 242
16.7.3 波的叠加和削减 242
16.7.4 波的物理行为 243
16.8 本章练习 245
16.9 本章小结 245
第4部分 3D数学 248
第17章 3D形状 248
17.1 概述 248
17.2 3D向量 248
17.2.1 添加第三个维度 248
17.2.2 向量(叉)积 249
17.2.3 使用叉积结果 250
17.2.4 齐次坐标 252
17.3 渲染机制 253
17.3.1 投影平面 254
17.3.2 透视 256
17.3.3 正交投影 257
17.4 光线投射 258
17.4.1 通过3D引擎计算路径上的对象 258
17.4.2 拾取、拖曳以及投掷操作 259
17.5 本章练习 260
17.6 本章小结 261
第18章 转换操作 262
18.1 概述 262
18.2 描述空间位置 262
18.2.1 位置、旋转和缩放 262
18.2.2 转换矩阵 264
18.3 转换应用 266
18.3.1 利用转换操作构建运动行为 266
18.3.2 插值计算 268
18.3.3 四元数 268
18.3.4 父转换和子转换 269
18.4 本章练习 271
18.5 本章小结 271
第19章 碰撞检测 272
19.1 概述 272
19.2 碰撞场景世界 272
19.2.1 球体 272
19.2.2 动球体和墙面 273
19.2.3 球体和运动点或两个球体 274
19.2.4 碰撞点 274
19.3 碰撞球体 274
19.3.1 椭球体 274
19.3.2 椭球体和运动点或平面 275
19.3.3 两个椭球体 275
19.4 碰撞盒体 276
19.4.1 盒体 276
19.4.2 盒体和移动点 276
19.4.3 两个盒体之间的碰撞 277
19.4.4 盒体与球体之间的碰撞 278
19.5 碰撞柱体 279
19.5.1 圆柱体 279
19.5.2 圆柱体与点或球体之间的碰撞 280
19.5.3 圆锥体与球体或粒子间的碰撞 281
19.5.4 两个圆柱体间的碰撞 282
19.6 其他碰撞类型 282
19.6.1 包围球、包围椭球体与包围盒 283
19.6.2 网格间的碰撞 283
19.7 三维空间中的碰撞处理 283
19.8 本章练习 283
19.9 本章小结 284
第20章 光照和纹理 285
20.1 概述 285
20.2 光照 285
20.2.1 真实光照 285
20.2.2 模拟光照 286
20.3 材质 288
20.3.1 表面颜色 288
20.3.2 图像贴图和纹理 290
20.3.3 贴图与形状之间的匹配 292
20.3.4 纹理链 293
20.4 着色机制 295
20.4.1 Gouraud和Phong着色 295
20.4.2 顶点法线 296
20.5 本章练习 296
20.6 本章小结 296
第21章 建模技术 298
21.1 概述 298
21.2 数学3D建模 298
21.2.1 旋转表面 298
21.2.2 3D样条 299
21.2.3 NURBS 300
21.2.4 基于正弦和余弦函数的表面 302
21.2.5 细分操作 303
21.3 动画表面 304
21.3.1 布料和头发 304
21.3.2 水波 306
21.4 骨骼动画 306
21.4.1 与骨骼协同工作 306
21.4.2 逆向动力学 308
21.5 本章练习 310
21.6 本章小结 310
第5部分 游戏算法 314
第22章 加速方案 314
22.1 概述 314
22.2 简单和复杂的计算方案 314
22.2.1 计算复杂度 314
22.2.2 使用查找表 315
22.2.3 整数计算 316
22.3 伪物理模拟 318
22.3.1 对碰撞执行简化计算 318
22.3.2 简化运动行为 319
22.3 剔除操作 320
22.3.1 空间划分 320
22.3.2 四叉树和八叉树 321
22.3.3 二分空间 322
22.3.4 包围体层次结构 323
22.4 本章练习 324
22.5 本章小结 324
第23章 贴图游戏 325
23.1 概述 325
23.2 根据位数据创建游戏 325
23.2.1 构造贴图场景 325
23.2.2 基本的运动行为和相机控制 326
23.2.3 基本的碰撞行为 327
23.2.4 复杂贴图单元 329
23.3 高级贴图机制 330
23.3.1 等轴测视图 330
23.3.2 3D贴图类游戏 331
23.3.3 基于样条的贴图单元 334
23.4 本章练习 334
23.5 本章小结 334
第24章 迷宫类游戏 335
24.1 概述 335
24.2 迷宫分类 335
24.2.1 图和连接性 335
24.2.2 迷宫转向 337
24.3 生成迷宫 339
24.3.1 处理迷宫数据 339
24.3.2 自动生成迷宫 340
24.3.3 多连通迷宫 343
24.3.4 更为复杂的迷宫结构 344
24.4 迷宫漫游 345
24.4.1 碰撞检测和相机控制 345
24.4.2 视线 346
24.4.3 迷宫的进程 348
24.4.4 路径搜索和A*算法 349
24.5 本章练习 351
24.6 本章小结 351
第25章 博弈论和人工智能 352
25.1 概述 352
25.2 博弈论简介 352
25.2.1 零和游戏 352
25.2.2 求解游戏 354
25.2.3 Tic-Tac-Toe游戏中的博弈论 356
25.2.4 Tic-Tac-Toe游戏的搜索方案 357
25.2.5 限制条件 360
25.3 战术型AI 360
25.3.1 棋类游戏的工作方式 361
25.3.2 程序训练 361
25.3.3 基于Tic-Tac-Toe游戏的战术AI 362
25.4 自顶向下型AI 362
25.4.1 目标和子目标 363
25.4.2 改变目标的时机 363
25.4.3 Tic-Tac-Toe游戏的自顶向下AI方案 364
25.5 自底向上型AI 365
25.5.1 神经网络 366
25.5.2 神经网络训练 368
25.5.3 行为者和涌现性 368
25.5.4 Tic-Tac-Toe的自底向上AI方案 369
25.6 本章练习 370
25.7 本章小结 370
第26章 搜索技术 371
26.1 概述 371
26.2 问题求解方式 371
26.2.1 问题表达 371
26.2.2 搜索答案 372
26.2.3 交互行为 374
26.3 用例学习 374
26.3.1 前期准备 374
26.3.2 编写搜索函数 376
26.4 遗传算法 376
26.4.1 自然选择 377
26.4.2 遗传算法分析 378
26.4.3 调整过程 379
26.5 本章练习 380
26.6 本章小结 381
附录A 术语表 382
附录B 代码引用 394
B.1 数据类型 394
B.2 变量 395
B.3 操作符 395
附录C 希腊字母 396
附录D 学习资源 397
D.1 数学 397
D.2 专业资源 398
D.2.1 碰撞检测 398
D.2.2 3D引擎和几何学 398
D.2.3 游戏物理 398
D.2.4 迷宫、搜索和人工智能 398
附录E 练习答案 400