《计算机图形学原理与实践》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:吴学毅主编(西安理工大学计算机学院)
  • 出 版 社:北京:印刷工业出版社
  • 出版年份:2008
  • ISBN:9787800007231
  • 页数:296 页
图书介绍:本书以介绍计算机图形学的基本原理、算法和实现为主线,并结合各章节中的主要原理、算法和过程介绍了与之相关的OpenGL图形库相关函数及其程序实现,从而将理论和实践很好地结合起来。使读者一方面通过本书的阅读较为系统、全面地了解、掌握计算机图形学的基本理论和方法,并通过对OpenGL图形库相关函数的学习加深对理论的理解;同时将OpenGL程序框架作为原理验证、系统开发的平台,尽力使读者通过对各章所附的综合实例程序的学习,达到综合运用所学知识,并通过进一步学习能够进行图形软件开发的目的。本书遵循计算机图形学内在知识体系规律,按照由简到繁、由二维到三维、由理论到实践的方式组织全书的内容。主要涉及:计算机图形学概论、基本图元生成、图形的几何变换、二维观察变换、三维观察变换、交互式图形用户界面、曲线和曲面、图形表示、真实感图形处理和Visual C++环境下OpenGL图形开发等内容。

第1章 计算机图形学概论 1

1.1 计算机图形学及其研究内容 1

1.2 计算机图形学的发展历程 2

1.3 计算机图形学的应用 4

1.3.1 图形用户界面 4

1.3.2 计算机辅助设计与制造 5

1.3.3 科学计算可视化 6

1.3.4 图形实时绘制与自然景物仿真 6

1.3.5 计算机动画 7

1.3.6 计算机艺术 7

1.3.7 地理信息系统 8

1.3.8 虚拟现实 8

1.4 计算机图形系统 9

1.4.1 计算机图形系统的功能及系统结构 9

1.4.2 图形输入设备 10

1.4.3 图形显示设备 15

1.4.4 光栅图形扫描系统 25

1.4.5 图形硬拷贝输出设备 27

1.4.6 图形软件 28

习题 31

第2章 Visual C++环境下OpenGL图形开发 33

2.1 OpenGL概述 33

2.1.1 OpenGL基本功能和操作 33

2.1.2 OpenGL工作方式 35

2.1.3 OpenGL相关库函数 36

2.1.4 OpenGL数据类型和函数名 37

2.2 Visual C++环境下OpenGL开发框架 37

2.2.1 OpenGL控制台应用程序框架 38

2.2.2 MFC环境下OpenGL单文档应用程序框架 40

2.2.3 OpenGL绘制描述表与设备描述表 42

2.2.4 OpenGL像素格式设置 43

2.3 基本图元绘制 44

2.3.1 图形显示控制 44

2.3.2 设置3D画布 47

2.3.3 点绘制 49

2.3.4 线段绘制 50

2.3.5 多边形绘制 51

习题 52

第3章 基本图元生成算法 53

3.1 线段的生成 53

3.1.1 DDA画线算法 54

3.1.2 中点画线算法 56

3.1.3 Bresenham画线算法 58

3.1.4 并行画线算法 60

3.2 圆的生成 61

3.2.1 圆的特性 61

3.2.2 中点画圆算法 61

3.2.3 Bresenham画圆算法 63

3.3 区域填充 64

3.3.1 多边形分类与识别 65

3.3.2 扫描线填色算法 66

3.3.3 种子填色算法 70

3.3.4 OpenGL多边形区域填充函数、像素阵列函数 71

3.4 字符的生成 75

3.4.1 点阵式字符 75

3.4.2 矢量字符 76

3.4.3 OpenGL字符函数 76

3.5 其他曲线 76

3.5.1 圆锥曲线 77

3.5.2 多项式和样条曲线 77

3.6 图元属性控制 77

3.6.1 颜色 78

3.6.2 点的属性 81

3.6.3 线的属性 81

3.7 反走样 83

3.7.1 直线段的过取样 83

3.7.2 区域取样 85

3.7.3 像素移相 87

3.7.4 OpenGL反走样函数 87

习题 88

第4章 曲线和曲面 89

4.1 曲线、曲面表示基础知识 89

4.1.1 曲线、曲面的显式、隐式和参数表示 89

4.1.2 插值和逼近样条 91

4.1.3 参数曲线的连续性条件 92

4.1.4 样条描述 93

4.2 三次插值样条 94

4.2.1 自然三次样条 94

4.2.2 三次Hermite样条 94

4.3 Bézier曲线、曲面 96

4.3.1 Bézier曲线的定义及性质 96

4.3.2 Bézier曲线的矩阵表示 98

4.3.3 Bézier曲线的生成 99

4.3.4 Bézier曲面 101

4.4 B样条曲线、曲面 102

4.4.1 定义及性质 103

4.4.2 均匀周期二次B样条曲线 104

4.4.3 三次周期B样条曲线 106

4.4.4 开放均匀B样条曲线 107

4.4.5 B样条曲面 109

4.5 有理样条曲线、曲面 110

4.6 样条曲线、曲面的离散生成 112

4.7 OpenGL逼近样条函数 115

4.7.1 Bézier样条曲线函数 115

4.7.2 Bézier样条曲面函数 117

4.7.3 NURBS样条曲线函数 118

4.7.4 NURBS曲面函数 120

4.7.5 曲面的剪切 121

习题 123

第5章 图形的几何变换 124

5.1 齐次坐标表示 124

5.2 二维几何变换 124

5.2.1 二维平移变换 125

5.2.2 二维旋转变换 125

5.2.3 二维缩放变换 126

5.2.4 反射变换 127

5.2.5 错切变换 129

5.3 通用二维复合变换 129

5.3.1 复合二维平移 130

5.3.2 复合二维旋转 130

5.3.3 复合二维缩放 130

5.3.4 相对任一参考点的二维几何变换 131

5.4 二维坐标系变换 131

5.4.1 指定角度和原点位置的2个笛卡尔坐标系间的转换 131

5.4.2 指定向量和原点位置的2个笛卡尔坐标系间的转换 132

5.5 三维空间的几何变换 133

5.5.1 三维平移变换 133

5.5.2 简单三维旋转变换 134

5.5.3 简单三维缩放变换 135

5.5.4 三维反射变换 135

5.5.5 三维错切变换 136

5.5.6 三维复合变换 136

5.5.7 三维坐标系间的变换 138

5.6 OpenGL几何变换函数 139

5.6.1 几何变换 139

5.6.2 OpenGL矩阵操作 141

5.6.3 OpenGL短阵栈 142

习题 142

第6章 二维观察 143

6.1 二维观察变换 143

6.2 观察坐标系变换 146

6.3 窗口到视区的变换 147

6.3.1 从窗口到视区的一般变换过程 147

6.3.2 窗口到视区的变换 148

6.4 OpenGL二维观察函数 149

6.4.1 指定投影模式 149

6.4.2 设置裁剪窗口函数 149

6.4.3 视区设置函数 149

6.4.4 建立GLUT显示窗口 150

6.4.5 设定GLUT显示窗口的模式和颜色 150

6.4.6 GLUT显示窗口位置和大小的修改 150

6.4.7 在GLUT显示窗口中观察图形对象 151

6.4.8 执行应用程序 151

6.5 裁剪算法 151

6.5.1 二维点裁剪 152

6.5.2 二维直线裁剪 152

6.5.3 Cohen_Sutherland线段裁剪算法 153

6.5.4 Liang-Barsky线段裁剪算法 155

6.5.5 Nicholl-Lee-Nicholl线段裁剪算法 157

6.6 多边形裁剪 159

6.6.1 Sutherland-Hodgman多边形裁剪算法 159

6.6.2 Weiler-Atherton多边形裁剪算法 161

6.7 文字裁剪 163

习题 163

第7章 三维观察 164

7.1 三维观察与观察流程 164

7.2 三维观察坐标系 165

7.2.1 三维观察坐标系定义 165

7.2.2 世界坐标系向三维观察坐标系的变换 166

7.2.3 生成观察效果 167

7.3 投影变换 167

7.3.1 平行投影 168

7.3.2 透视投影 174

7.4 三维裁剪算法 183

7.4.1 三维Cohen-Sutherland线段裁剪算法 183

7.4.2 其他三维形体的裁剪 184

7.4.3 OpenGL附加裁剪面 185

习题 186

第8章 交互式输入技术与图形用户界面 187

8.1 用户接口模型 187

8.2 逻辑输入设备 189

8.3 图形输入控制方式 191

8.3.1 请求方式 192

8.3.2 取样方式 193

8.3.3 事件方式 194

8.4 交互式绘图技术 195

8.4.1 回显 195

8.4.2 约束 196

8.4.3 橡皮筋技术 196

8.4.4 拖曳技术 197

8.4.5 网格技术 197

8.4.6 拾取技术 197

8.4.7 吸附技术 198

8.5 三维交互技术 198

8.6 OpenGL交互式输入函数 200

8.6.1 交互式输入设备接受函数 200

8.6.2 选择、拾取和反馈操作 202

8.7 图形用户界面设计 204

8.7.1 用户模型 205

8.7.2 显示屏幕的有效利用 205

8.7.3 反馈 206

8.7.4 一致性原则 206

8.7.5 减少记忆量 206

8.7.6 回退与出错处理 207

8.7.7 视觉效果设计 207

8.7.8 适应不同用户 207

习题 207

第9章 三维对象的表示 209

9.1 图形对象的定义及性质 209

9.1.1 图形对象的定义 209

9.1.2 几何信息与拓扑关系 211

9.1.3 正则物体的性质和欧拉公式 212

9.2 三维图形对象的表示方法 215

9.3 规则欧氏几何对象表示 216

9.3.1 边界表示法 216

9.3.2 扫描表示法 218

9.3.3 构造实体几何法 219

9.3.4 八叉树 221

9.3.5 BSP树 223

9.4 非规则对象表示 223

9.4.1 分形几何 223

9.4.2 形状语法 226

9.4.3 粒子系统 226

9.4.4 基于物理的建模 226

9.5 科学计算可视化 227

9.5.1 标量场的可视化 228

9.5.2 向量场的可视化 229

9.5.3 张量场的可视化 230

习题 231

第10章 真实感图形绘制 232

10.1 隐藏线、面消隐 232

10.1.1 凸多面体的隐藏线消除 233

10.1.2 凹多面体的隐藏线消除 234

10.1.3 区域排序面消隐算法 237

10.1.4 深度缓存算法 238

10.1.5 光线投射算法 239

10.1.6 扫描线Z缓冲区算法 239

10.2 OpenGL可见性检查函数 241

10.2.1 多边形隐藏面剔除函数 241

10.2.2 深度缓存函数 241

10.3 光照模型 242

10.3.1 光源特性 243

10.3.2 物体表面特性 244

10.3.3 简单光照模型 244

10.3.4 光强衰减 246

10.4 基于简单光照模型的多边形绘制 246

10.4.1 恒定光强多边形绘制 246

10.4.2 Gouraud明暗处理 247

10.4.3 Phong明暗处理 248

10.5 阴影生成 249

10.6 景物表面细节模拟 249

10.6.1 用多边形模拟表面细节 250

10.6.2 纹理映射 250

10.6.3 凹凸纹理映射 251

10.7 整体光照模型与光线跟踪 252

10.7.1 整体光照模型 252

10.7.2 光线跟踪 253

10.8 OpenGL光照和物体表面特性函数 258

10.8.1 OpenGL光照函数 258

10.8.2 物体表面特性函数 262

10.9 OpenGL纹理映射 263

习题 266

附录 268

参考文献 296