第0章 介绍 1
0.1 从本书中获得尽可能多的东西 1
0.2 从哪儿开始 2
0.3 需要什么 2
0.4 本书提供什么 3
0.4.1 源代码 3
0.4.2 本书的特点 4
0.5 本书是如何组织的 7
0.6 下一步该干什么 8
第一部分 图形程序设计 11
第一章 概念和术语 12
1.1 概念和术语的定义 12
1.1.1 激活一个应用程序 12
1.1.2 应用程序资源 12
1.1.3 系统资源 12
1.1.4 消息 12
1.1.5 消息循环 13
1.1.6 消息句柄 13
1.1.7 视口 13
1.1.8 GDI 13
1.1.9 DLL 13
1.1.10 设备 13
1.1.11 相关设备 13
1.1.12 相关显示 13
1.1.13 相容相关显示 14
1.1.14 持续图形 14
1.1.15 绘画工具 14
1.1.16 输出操作 14
1.1.17 绘画工具函数 14
1.1.18 绘画属性函数 14
1.1.19 RGB颜色 15
1.1.20 抖动色 15
1.1.21 调色板 15
1.1.22 区域 15
1.2 下一步该干什么 15
第二章 Windows程序设计初步 16
2.1 应用程序各个部分 16
2.1.1 项目文件 16
2.1.2 全局变量模块文件 16
2.1.3 起始模块文件 16
2.1.4 窗体模块文件 16
2.2 怎样创建一个应用程序 17
2.2.1 相同的窗口和视口 17
2.2.2 相同的用户界面 17
2.3 设计的几项原则 18
2.3.1 前后一致 18
2.3.2 清晰 18
2.3.3 容错能力 18
2.3.4 遍历设计 18
2.3.5 经过使用检验 18
2.3.6 标准化 19
2.3.7 持续图形 19
2.4 下一步该干什么 19
第三章 图形程序设计初步 20
3.1 GDI 20
3.2 选择绘画面 20
3.2.1 设备 20
3.2.2 使用上下文显示 21
3.3 选择绘图工具 22
3.3.1 绘图工具与输出操作 22
3.3.2 GDI提供的绘画工具 22
3.3.3 创建和选择画笔 22
3.3.4 背景属性 22
3.3.5 绘图模式 23
3.3.6 创建和选择画刷 23
3.3.7 设置RGB颜色 23
3.3.8 创建和使用逻辑调色板 23
3.4 怎样告诉GDI干什么 24
3.4.1 形状 24
3.4.2 位图 24
3.4.3 区域 25
3.5 下一步该干什么 25
第四章 指导课:Windows图形程序设计 26
4.1 应用程序实例指南 26
4.1.1 启动应用程序实例 26
4.1.2 使用应用程序实例 26
4.1.3 退出应用程序实例 31
4.2 应用程序的程序员指南 31
4.2.1 全局模块如何工作 31
4.2.2 启动模块如何工作 31
4.2.3 窗体模块如何工作 32
4.3 定制演示程序 33
4.4 下一步该干什么 34
第二部分 三维程序设计 35
第五章 概念和术语 36
5.1 定义概念和术语 36
5.2 下一步该干什么 38
第六章 视觉几何初步 39
6.1 初级三维程序人员 39
6.1.1 边界表示造型 39
6.1.2 视觉几何 40
6.1.3 造型几何 40
6.1.4 着色几何 40
6.2 三维变换 41
6.2.1 三维变换序列 41
6.2.2 右手坐标系 43
6.2.3 偏角、转角和倾角 43
6.3 三维视觉体 44
6.3.1 三维透视视觉体 44
6.3.2 规格化三维透视视觉体 44
6.3.3 长方体视觉体 45
6.4 着色方法 47
6.4.1 边框模式 47
6.4.2 实体造型模式 47
6.4.3 浓淡实体 47
6.5 隐藏面消除 49
6.5.1 后表面剔除 49
6.5.2 Z—缓冲深度排序 49
6.6 下一步该干什么 51
第七章 着色初步 52
7.1 使用RGB颜色 52
7.2 使用描述色 55
7.2.1 三维实体普通描述色 55
7.2.2 主观色的RGB代码 55
7.3 设置光源位置 57
7.3.1 计算光照强度 57
7.3.2 移动光源 58
7.4 着色阴影 58
7.4.1 移动照相机到光源所在位置 58
7.4.2 阴影映射 58
7.4.3 使用阴影映射造型流水线 59
7.5 光线跟踪三维场景 60
7.6 表面写真 60
7.6.1 纹理映象 61
7.6.2 反射映象 61
7.6.3 细节多边形 62
7.7 着色透明表面 62
7.7.1 基于Z—缓冲的非折射透明体 62
7.7.2 透明着色循环 62
7.8 下一步该干什么 62
第八章 造型初步 63
8.1 造型几何 63
8.1.1 平行四边形体 64
8.1.2 球和半球 65
8.1.3 圆柱和半圆柱 67
8.1.4 圆锥和楔形体 68
8.1.5 曲面 69
8.1.6 延伸技术 70
8.2 层次造型 70
8.2.1 三维编辑器的种类 71
8.2.2 使用子组合体 72
8.3 下一步该干什么 73
第九章 指导课:三维程序设计 75
9.1 应用程序实例的用户指导 75
9.1.1 启动应用程序实例 75
9.1.2 使用应用程序实例 76
9.1.3 退出应用程序实例 81
9.2 应用程序实例的程序员指导 82
9.2.1 全局模块是如何工作的 82
9.2.2 启动模块是如何工作的 82
9.2.3 窗体模块是如何工作的 82
9.2.4 三维引擎工具包是如何工作的 84
9.2.5 三维形状工具包是如何工作的 86
9.2.6 三维变形模块是如何工作的 87
9.2.7 三维光线工具包是如何工作的 88
9.2.8 三维组合体工具包是如何工作的 88
9.3 调整演示程序 88
9.4 下一步该干什么 88
第三部分 动画程序设计 91
第十章 概念和术语 92
10.1 概念和术语的定义 92
10.1.1 创作平台 92
10.1.2 输出平台 92
10.1.3 实现和控制 92
10.1.4 动画引擎 92
10.1.5 计算机辅助传统动画 92
10.1.6 过程动画 93
10.1.7 基于实际的动画 93
10.1.8 交互动画 93
10.1.9 基于虚拟现实的动画 93
10.1.10 四维时空 93
10.1.11 动画在Windows上是如何实现的 93
10.1.12 实时动画 94
10.1.13 框架动画 94
10.1.14 舞台设计 94
10.1.15 连接运动 94
10.2 下一步该干什么 94
第十一章 动画初步 95
11.1 实现与控制 95
11.1.1 实现 95
11.1.2 控制 96
11.2 四维时空 98
11.2.1 运动动力学 99
11.2.2 修正动力学 99
11.2.3 视觉动力学 99
11.3 动画实现 99
11.3.1 字块传输 99
11.3.2 页拷贝 100
11.3.3 褪光与遮色 100
11.3.4 帧动画 100
11.4 下一步该干什么 102
第十二章 指导课:三维动画程序设计 103
12.1 应用实例的用户指南 103
12.1.1 启动应用实例 103
12.1.2 使用应用实例 103
12.1.3 退出应用实例 108
12.2 应用程序实例的程序员指导 108
12.2.1 全局模块如何工作 108
12.2.2 启动模块如何工作 108
12.2.3 窗体模块如何工作 109
12.2.4 核心函数是如何运行的 110
12.2.5 动画模块是如何工作的 110
12.3 下一步该干什么 111
第十三章 指导课:三维运动控制程序设计 112
13.1 应用实例的用户指南 112
13.1.1 启动应用程序实例 112
13.1.2 使用应用程序实例 112
13.1.3 退出应用实例 114
13.2 应用程序实例的程序员指导 114
13.2.1 全局模块如何工作 114
13.2.2 启动模块如何工作 114
13.2.3 窗体模块如何工作 114
13.3 下一步该干什么 116
第四部分 仿真程序设计 117
第十四章 概念和术语 118
14.1 概念和术语的定义 118
14.1.1 仿真 118
14.1.2 基于知识的仿真 118
14.1.3 仿真流水线 118
14.1.4 基于博奕论的仿真 118
14.1.5 零和与非零和游戏 118
14.1.6 囚徒二难推论 119
14.1.7 最大最小策略 119
14.1.8 渐近稳定策略 119
14.1.9 不可取胜的游戏 119
14.1.10 推理 119
14.1.11 相关论 120
14.1.12 遗传算法 120
14.1.13 演绎推理 120
14.1.14 归纳推理 120
14.1.15 诱导推理 120
14.1.16 认识计算 121
14.1.17 概率 121
14.1.18 条件概率 121
14.1.19 基于实际的仿真 121
14.1.20 基于实际的动画 122
14.1.21 约束 122
14.1.22 基于实际的动画是如何实现的 122
14.1.23 虚拟现实 122
14.2 下一步该干什么 124
第十五章 基于知识的仿真 125
15.1 仿真流水线 125
15.2 基于博奕论的仿真 127
15.2.1 零和与非零和决策 128
15.2.2 单步决策与迭代策略 129
15.2.3 渐近稳定策略 131
15.2.4 不可取胜的对策 131
15.3 基于推理的仿真 132
15.3.1 推理 133
15.3.2 诊断推理 134
15.3.3 概率 135
15.3.4 样本空间和概率空间 136
15.3.5 二项系数与概率空间 137
15.3.6 概率和对策论 137
15.4 基于实际的仿真 138
15.4.1 碰撞 139
15.4.2 基于实际的动画 140
15.5 下一步该干什么 141
第十六章 运动学和动力学初步 142
16.1 基于约束的动画 142
16.1.1 控制方法 142
16.1.2 碰撞检测 143
16.2 仿真造型流水线 144
16.2.1 动力学一运动学流水线 144
16.2.2 流水线元件 145
16.3 下一步该干什么 146
第十七章 运动学程序设计指导 147
17.1 应用实例的用户指南 147
17.1.1 启动应用实例 147
17.1.2 使用应用程序实例 147
17.2 应用程序实例的程序员指南 151
17.2.1 全局模块如何工作 151
17.2.2 启动模块如何工作 151
17.2.3 窗体模块如何工作 152
17.2.4 使用脚本文件 152
17.2.5 运动学模块如何工作 153
17.3 下一步该干什么 159
第十八章 虚拟现实初步 160
18.1 什么是虚拟现实 160
18.1.1 虚拟现实的种类 160
18.1.2 输入设备 161
18.2 实现一个虚拟现实环境 162
18.3 下一步该干什么 164
第十九章 虚拟现实编程指导 165
19.1 应用实例的用户指导 165
19.1.1 应用实例的启动 165
19.1.2 使用应用实例 165
19.2 应用实例的程序员指南 168
19.2.1 全局模块如何工作 169
19.2.2 启动模块如何工作 169
19.2.3 窗体模块如何工作 169
19.3 下一步该干什么 170
第五部分 使用附录 171
附录A 编译程序实例 172
A.1 从哪里开始 172
A.1.1 用startup.frm检测系统 172
A.2 还需要什么 172
A.2.1 可以使用自己喜欢的Visual Basic版本吗 172
A.2.2 需要怎样的图形卡 172
A.2.3 演示程序需要怎样的计算机 173
A.2.4 需要多少内存 173
A.2.5 需要一个数字协处理器吗 173
A.3 怎样测试演示程序 173
A.4 需要怎样的运行效果 173
A.5 怎样使用附带磁盘 175
A.5.1 疑难指导 175
附录B 工具包的源程序清单 177
附录C 应用程序范例的源程序清单 307
附录D 图形程序设计的数学基础 600
D.1 二维矢量 600
D.2 三维矢量 601
D.3 矩阵运算 602
D.4 光线跟踪的矢量运算 604
附录E 词汇表 605