《计算机图形学——用OpenGL实现(第2版)》PDF电子书免费下载

作者:  希尔

出版社: 清华大学出版社

出版年: 2006-4-26

ISBN: 9787302117094

~~滚到底部有网盘下载链接~~

内容简介

目录

第1章 计算机图形学导言 1
1.1 什么是计算机图形 1
1.2 计算机生成的图片应用
在哪些地方 3
1.2.1 艺术、娱乐以及出版 3
1.2.2 计算机图形和图像处理 4
1.2.3 监视过程 5
1.2.4 显示模拟 6
1.2.5 计算机辅助设计 7
1.2.6 科学分析和可视化 7
1.3 在计算机图形中创建的图片元素 10
1.3.1 折线 10
1.3.2 文本 12
1.3.3 实心区域 13
1.3.4 光栅图像 14
1.3.5 灰度阴影的呈现以及
光栅图像中的颜色 18
1.4 图像显示设备 21
1.4.1 绘线型显示器 21
1.4.2 光栅显示器 22
1.4.3 索引颜色和查找表格 26
1.4.4 其他的光栅显示设备 29
1.4.5 硬拷贝光栅设备 30
1.5 图形输入原语和设备 31
1.5.1 输入图形原语的类型 31
1.5.2 物理输入设备的类型 32
1.6 小结 34
1.7 进一步阅读 34
第2章 绘制图片入门 36
2.1 着手创建图片 36
2.1.1 设备无关编程和OpenGL 38
2.1.2 基于窗口的编程 38
2.1.3 打开一个绘图窗口 40
2.2 绘制基本图形原语 41
绘制点丛 44
2.3 绘制线条画 50
2.3.1 绘制折线和多边形 51
2.3.2 使用moveto( )和
lineto( )绘制线条 55
2.3.3 绘制校准长方形 56
2.3.4 校准长方形的高宽比 57
2.3.5 填充多边形 59
2.3.6 OpenGL中的其他
图形原语 60
2.4 使用鼠标和键盘的简单交互作用 61
2.4.1 鼠标交互作用 61
2.4.2 键盘交互作用 64
2.5 小结 65
2.6 案例分析 66
案例分析2.1?伪随机点的集合 66
案例分析2.2?迭代函数系统
导言 68
案例分析2.3?资金分割率和
其他的宝石 71
案例分析2.4?建立并使用折线
文件 73
案例分析2.5?线条和多边形的
点画法 74
案例分析2.6?折线编辑器 75
案例分析2.7?建立并运行迷阵 76
2.7 进一步阅读 78
第3章 更多绘图工具 79
3.1 简介 80
3.2 世界窗口和视口 80
3.2.1 从窗口到视口的映射 82
3.2.2 自动设定窗口和视口 91
3.3 裁剪线 94
3.3.1 裁剪线段 94
3.3.2 Cohen-Sutherland裁剪
算法 95
3.4 开发Canvas类 98
3.4.1 一些有用的支持类 99
3.4.2 类Canvas的声明 100
3.4.3 类Canvas的实现方法 101
3.5 相对绘图例程 103
3.5.1 开发moveRel( )和
lineRel( ) 104
3.5.2 龟纹绘图历程 105
3.6 基于规则多边形的图形 109
3.6.1 规则多边形 109
3.6.2 n-Gon的变分(Variation) 111
3.7 绘制圆和圆弧 115
3.7.1 绘制圆 115
3.7.2 绘制圆弧 115
3.8 对曲线使用参数形式 119
3.8.1 曲线的参数形式 119
3.8.2 绘制以参数表示的曲线 122
3.8.3 超椭圆(Superellipses) 124
3.8.4 极坐标形状 125
3.8.5 3D曲线 127
3.9 小结 128
3.10 案例分析 129
案例分析3.1 学习数理逻辑图形
和混沌模拟 129
案例分析3.2 在C或者C++中实
现Cohen-Suther-
land裁剪器 131
案例分析3.3 在Turbo C++中
实现Canvas 133
案例分析3.4 绘制圆弧 135
案例分析3.5 一些用于物理和
工程中的图形 136
案例分析3.6 平铺图案 138
案例分析3.7 主旋律的有趣
改变 139
案例分析3.8 圆围绕着圆
滚动 141
案例分析3.9 超椭圆 142
3.11?进一步阅读 143
第4章 图形向量工具 144
4.1 简介 145
4.2 向量 147
4.2.1 向量操作 148
4.2.2 向量线性组合 149
4.2.3 向量的大小;单位向量 151
4.3 点积 152
4.3.1 点积的性质 153
4.3.2 两个向量的夹角 154
4.3.3 b·c的符号和正交性 154
4.3.4 2D"正交"向量 156
4.3.5 正交投影和点到线
的距离 158
4.3.6 投影的应用:反射 160
4.4 两个向量的叉积 161
4.4.1 叉积的几何解释 162
4.4.2 求平面的法向量 163
4.5 主要几何对象的表示 164
4.5.1 坐标系和坐标框架 165
4.5.2 点的仿射组合 168
4.5.3 两个点的线性插值 170
4.5.4 艺术和动画的"插值" 171
4.5.5 概述:二次插值、立方
插值和贝济埃曲线 173
4.5.6 表示线和平面 174
4.6 求两条线段的交点 182
直线相交的应用:过三点的圆 184
4.7 直线和平面的交点;裁剪 186
4.8 多边形相交问题 188
4.8.1 处理凸多边形和多面体 189
4.8.2 射线与凸多边形的交点
和裁剪问题 190
4.8.3 Cyrus-Beck裁剪算法 194
4.8.4 任意多边形的裁剪 196
4.8.5 更高级的裁剪问题 198
4.9 小结 198
4.10 案例分析 199
案例分析4.1 插值动画 199
案例分析4.2 大量的圆 200
案例分析4.3 点Q是否在凸多
边形P内部 201
案例分析4.4 密室反射(2D射线
跟踪) 202
案例分析4.5 Cyrus-Beck
裁剪 203
案例分析4.6 用凸多边形裁剪多
边形:Sutherland-
Hodgman裁剪 203
案例分析4.7 用多边形裁剪多
边形:Weiler-
Atherton 裁剪 206
案例分析4.8 多边形的布尔
操作 208
4.11 进一步阅读 210
第5章 对象的变换 211
5.1 简介 212
5.2 变换导论 212
5.2.1 变换点和对象 215
5.2.2 仿射变换 217
5.2.3 初等2D仿射变换的
几何效果 218
5.2.4 仿射变换的逆转 223
5.2.5 组合仿射变换 224
5.2.6 组合2D变换的例子 226
5.2.7 仿射变换的一些
有用特征 230
5.3 3D仿射变换 235
5.3.1 初等3D变换 236
5.3.2 组合3D仿射变换 240
5.3.3 组合旋转 240
5.3.4 3D仿射变换特征小结 245
5.4 改变坐标系 246
5.5 在程序中使用仿射变换 249
保存CT以备用 256
5.6 使用OpenGL绘制3D场景 260
5.6.1 观察过程和图形流水线
综述 261
5.6.2 一些OpenGL建模和
视角工具 264
5.6.3 用OpenGL绘制基本
形状 267
5.6.4 从文件中读取场景 275
5.7 小结 279
5.8 案例分析 280
案例分析5.1 用Canvas中的CT
进行自行变换 280
案例分析5.2 使用多个旋转绘制图
5.39中的星星 280
案例分析5.3 分解2D仿射变换 280
案例分析5.4 通用3D错切 284
案例分析5.5 绕某条轴旋转:构造
方法 286
案例分析5.6 分解3D仿射
变换 287
案例分析5.7 用SDL绘制3D
场景 289
5.9 进一步阅读 289
第6章 使用多边形网格为各种形状建模 290
6.1 简介 290
6.2 使用多边形网格实体建模简介 291
6.2.1 定义多边形网格 292
6.2.2 计算法向量 294
6.2.3 网格的性质 296
6.2.4 为非实体物体建立网格
模型 298
6.2.5 在程序中使用网格 298
6.3 多面体 301
6.3.1 棱柱和对角柱 303
6.3.2 柏拉图立体 304
6.3.3 其余常见的多面体 309
6.4 推挤型形状 312
6.4.1 生成棱柱 312
6.4.2 推挤棱柱数组:"堆砌
工作" 313
6.4.3 带有"扭曲"的推挤 315
6.4.4 建立分段推挤形状:管状
物体和蛇形物体 316
6.4.5 "离散地"延伸旋转面 321
6.5 平滑物体的网格近似 323
6.5.1 表面的表示方法 323
6.5.2 表面的法向量 325
6.5.3 仿射变换的作用 326
6.5.4 三种"标准"形状:球面、
圆柱面和圆锥面 327
6.5.5 为曲面建立多边形网格 331
6.5.6 直纹面 333
6.5.7 旋转面 338
6.5.8 二次曲面 340
6.5.9 超二次曲面 344
6.5.10 基于三维曲线的管状
物体 346
6.5.11 基于双变量显式函数
的表面 346
6.6 小结 347
6.7 案例分析 348
案例分析6.1 存储在文件中的
网格 348
案例分析6.2 Newell方法的
推导 349
案例分析6.3 棱柱 351
案例分析6.4 棱柱组和推挤
四边形带 352
案例分析6.5 基于参数曲线的
管状物体和蛇形
物体 353
案例分析6.6 建立离散旋转面 354
案例分析6.7 关于边列表和
线框模型 354
案例分析6.8 拱形屋顶 354
案例分析6.9 关于柏拉图立体 355
案例分析6.10 关于阿基米德
立体 355
案例分析6.11 二次曲面的代数
表达式 355
案例分析6.12 超二次曲面 357
案例分析6.13 绘制平滑参数
表面 357
案例分析6.14 锥化、扭曲、弯曲
和挤压 358
6.8 进一步阅读 359
第7章 三维视图 360
7.1 简介 360
7.2 再次研究照相机 361
7.2.1 设置视角范围 362
7.2.2 照相机的定位和定向 362
7.3 在程序中建立照相机 368
移动照相机 370
7.4 三维物体的透视投影 373
7.4.1 点的透视投影 374
7.4.2 直线的透视投影 377
7.4.3 把透视法结合到图形
管道中 380
7.4.4 对视角范围进行面裁剪 387
7.5 生成立体视图 393
7.6 投影的分类 395
7.6.1 一点透视,两点透视和
三点透视 396
7.6.2 平行投影 400
7.7 小结 406
7.8 案例分析 407
案例分析7.1 在场景中移动
照相机 407
案例分析7.2 立体视图 408
案例分析7.3 生成平行投影 408
案例分析7.4 自己产生视图(假定
没有OpenGL可以
使用) 408
案例分析7.5 去掉背面以提高
效率 408
7.9 进一步阅读 410
第8章 渲染表面获得视觉真实感 411
8.1 简介 411
8.2 明暗处理模型介绍 415
8.2.1 计算反射光的几何要素 416
8.2.2 计算漫反射分量 416
8.2.3 镜面反射 418
8.2.4 环境光的作用 421
8.2.5 光分量的结合 422
8.2.6 添加颜色 423
8.2.7 明暗处理和图形管道 425
8.2.8 在OpenGL中使用光源 426
8.2.9 在OpenGL中使用材质
属性 431
8.2.10 对SDL指定的场景进行
明暗处理 432
8.3 平面明暗处理方式和平滑明暗
处理方式 432
8.3.1 平面明暗处理 433
8.3.2 平滑明暗处理 434
8.4 去除隐藏面 438
深度缓冲区方法 438
8.5 给面添加纹理 441
8.5.1 把纹理映射到平表面上 444
8.5.2 渲染纹理 446
8.5.3 纹理改变了什么 453
8.5.4 使用OpenGL获得的
纹理示例 455
8.5.5 向曲面上环绕纹理 460
8.5.6 反射映射 464
8.6 为物体添加阴影 467
8.6.1 作为纹理的阴影 468
8.6.2 利用阴影缓冲区
生成阴影 469
8.7 小结 471
8.8 案例分析 472
案例分析8.1 使用OpenGL生成
有阴影的物体 472
案例分析8.2 自己实现图形
管道 472
案例分析8.3 添加多边形填充和
深度缓冲区去除
隐藏面 473
案例分析8.4 渲染纹理 473
案例分析8.5 应用可编程3D
纹理 473
案例分析8.6 绘制阴影 474
案例分析8.7 扩展SDL使其包括
纹理生成 474
8.9 进一步阅读 474
第9章 通向无限之路 475
9.1 简介 476
9.2 分形与自相似性 476
9.2.1 曲线的连续细化 477
9.2.2 绘制Koch曲线和Koch
雪花 478
9.2.3 分形维数 480
9.3 字符串产生式和PEANO曲线 481
9.3.1 在程序中递归生成字符串
并绘图 483
9.3.2 添加分支 486
9.4 拼接平面 489
9.4.1 单面拼接 490
9.4.2 双面拼接 492
9.4.3 绘制拼接 494
9.4.4 "爬虫" 494
9.5 通过迭代函数系统生成图像 497
9.5.1 拷贝器试验 497
9.5.2 拷贝过程的一些基本
理论 499
9.5.3 绘制第k次迭代结果 500
9.5.4 混沌游戏 501
9.5.5 计算IFS;分形图像压缩 504
9.6 MANDELBROT集 507
9.6.1 Mandelbrot集和迭代
函数系统 508
9.6.2 定义Mandelbrot集 511
9.6.3 计算点c是否在Mandelbrot
集内 513
9.6.4 绘制Mandelbrot集 514
9.6.5 Mandelbrot集的几点性质 515
9.7 JULIA集 516
9.7.1 充满Julia集Kc 516
9.7.2 绘制充满Julia集 516
9.7.3 固定点和吸引盆的
几点性质 517
9.7.4 Julia集Jc 519
9.8 随机分形 521
9.8.1 线段的分形化 522
9.8.2 控制分形曲线的
频谱密度 523
9.9 小结 525
9.10 案例分析 526
案例分析9.1 绘制字符串
产生式 526
案例分析9.2 绘制雪花和
爬虫 527
案例分析9.3 混沌游戏 529
案例分析9.4 绘制Mandelbrot
集中的轨道 529
案例分析9.5 生成Mandelbrot集
的图像 530
案例分析9.6 生成Julia集的
图像 530
案例分析9.7 非周期性拼接;
Penrose拼板 530
案例分析9.8 分形化曲线 532
案例分析9.9 为分形山建模 533
9.11 进一步阅读 533
第10章 光栅显示工具 534
10.1 简介 534
10.2 处理像素映射 536
10.2.1 对像素映射的操作 536
10.2.2 像素映射的有用数据
类型 537
10.2.3 图像的缩放和旋转 543
10.3 合并像素映射 546
10.3.1 读-修改-写循环 547
10.3.2 Alpha通道和图像
融合 548
10.3.3 像素的逻辑合并 552
10.3.4 BitBLT操作 556
10.4 自己实现直线绘制:Bresenham
算法 557
Bresenham直线绘制算法 558
10.5 定义和填充像素区域 563
10.5.1 定义区域范围 564
10.5.2 像素定义的区域 564
10.5.3 一种递归洪水填充
算法 565
10.5.4 用图案填充区域 566
10.5.5 利用一致性:基于像素
串的区域填充 568
10.6 处理符号定义的区域 569
10.6.1 矩形定义的区域 570
10.6.2 路径定义的区域 571
10.7 填充多边形定义的区域 573
10.7.1 边缘上的哪些像素
属于多边形 574
10.7.2 改进算法性能 576
10.8 失真;反失真技术 580
10.8.1 反失真技术 581
10.8.2 纹理的反失真 586
10.8.3 使用OpenGL反失真 588
10.9 生成更多的明暗效果和色彩 590
10.9.1 顺序抖动 591
10.9.2 误差扩散 595
10.10 小结 597
10.11 案例分析 598
案例分析10.1 读取和显示BMP
图像文件 598
案例分析10.2 用OpenGL融合
两幅图像 598
案例分析10.3 基于像素串的
区域填充 598
案例分析10.4 处理shape数据
结构 599
案例分析10.5 shape的链码 599
案例分析10.6 填充"水平凸"
多边形 599
案例分析10.7 一般多边形
填充 600
案例分析10.8 误差扩散 600
10.12 进一步阅读 600
第11章 曲线与曲面设计 601
11.1 简介 602
11.1.1 轨迹参数曲线 602
11.1.2 运动的平滑度 603
11.2 用多项式表示曲线 606
11.3 关于交互式曲线设计 611
11.4 用贝济埃曲线进行曲线设计 613
de Casteljau算法 613
11.5 贝济埃曲线的性质 618
11.6 寻找更好的混合函数 623
11.6.1 局部控制问题 623
11.6.2 混合函数集的期望
性质表 624
11.6.3 分段多项式曲线和样条 626
11.6.4 根据g(t)建立一组混合
函数 627
11.6.5 样条曲线和基函数 630
11.7 B样条基函数 631
11.7.1 B样条函数定义 632
11.7.2 在结点向量中使用
多重结点 636
11.7.3 开放B样条曲线:标准
结点向量 637
11.8 B样条曲线设计的有用性质 640
使用多重控制点 641
11.9 有理样条和NURBS曲线 642
11.10 插值简述 646
11.10.1 用分段三次多项式
插值 647
11.10.2 Hermite插值 648
11.10.3 自然三次样条 651
11.10.4 三次插值中计算
斜率 653
11.10.5 交互指定切向量 656
11.11 曲面建模 657
11.11.1 基于B样条的
直纹面 657
11.11.2 基于B样条的
旋转面 657
11.11.3 贝济埃表面碎片 659
11.11.4 贝济埃碎片的拼接 660
11.11.5 B样条碎片 662
11.11.6 NURBS曲面 663
11.12 小结 664
11.13 案例分析 666
案例分析11.1 几种有趣的
参数曲线 666
案例分析11.2 "椭圆台球
桌" 667
案例分析11.3 贝济埃曲线 669
案例分析11.4 一种二次样条
曲线生成法 669
案例分析11.5 建立样条曲线
编辑器 669
案例分析11.6 用B样条插值
控制点 670
案例分析11.7 用三次多项式
插值 671
案例分析11.8 古老的茶壶 671
案例分析11.9 投影变换不
变性 673
案例分析11.10 绘制NURBS
碎片 673
11.14 进一步阅读 675
第12章 色彩理论 676
12.1 简介 676
12.2 描述颜色 679
12.2.1 主导波长 679
12.2.2 色匹配 680
12.3 国际照明协会标准 682
12.3.1 构造CIE表 684
12.3.2 使用CIE色度表 685
12.3.3 色域 686
12.4 颜色空间 687
12.4.1 RGB和CMY颜色空间 687
12.4.2 加色和减色系统 688
12.4.3 HLS颜色模型 689
12.5 颜色量化 692
12.5.1 均衡量化 693
12.5.2 流行算法 695
12.5.3 中线切割算法 695
12.5.4 八叉树量化 696
12.6 小结 698
12.7 案例分析 699
案例分析12.1 画CIE图 699
案例分析12.2 画RGB空间 699
案例分析12.3 HSV到RGB
的转变 699
案例分析12.4 均匀颜色量化 699
案例分析12.5 流行颜色量化 699
案例分析12.6 中线切割颜色
量化 699
案例分析12.7 八叉树颜色
量化 700
12.8 进一步阅读 701
第13章 隐面的消除 702
13.1 简介 703
13.1.1 对象精度与图像精度
方法的比较 704
13.1.2 多边形网格的数据描述 705
13.2 再次研究深度缓存算法 707
13.3 列表优先HSR算法 708
13.3.1 粗心画家算法 709
13.3.2 使用二叉空间分割(BSP)
树的HSR 710
13.3.3 深度排序算法 714
13.4 扫描线HSR方法 716
13.5 区域的细分方法 719
13.5.1 象限细分 719
13.5.2 简单区域的其他定义 722
13.6 关于隐线消除法 724
edgeTest( )中的几何测试 726
13.7 曲面的HSR方法 728
13.8 小结 730
13.9 案例分析 731
案例分析13.1 画家算法
测试 731
案例分析13.2 测试和分割 732
案例分析13.3 使用BSP树
消除隐面 732
案例分析13.4 使用深度排序法解
决HSR问题 733
案例分析13.5 采用扫描线HSR
方法 734
案例分析13.6 使用WARNOCK
算法绘制 734
案例分析13.7 HLR的边堆栈
算法 734
13.10 进一步阅读 735
第14章 光线追踪法的介绍 736
14.1 简介 737
14.2 建立光线跟踪法的几何学 738
14.3 光线跟踪法过程概述 740
14.4 光线与对象的交点 741
14.4.1 光线与通用平面的
相交 743
14.4.2 光线与通用球体相交 743
14.4.3 光线与变换后的对象
相交 744
14.5 编制光线跟踪器的应用程序 746
14.5.1 计算光线-球体相交
的例程 752
14.5.2 用于发光球体场景的
完整的光线跟踪器 754
14.6 光线与其他几种基本
形状的相交 755
14.6.1 与正方形相交 755
14.6.2 与锥形柱体相交 756
14.6.3 与立方体(或任何凸
多面体)相交 759
14.6.4 考虑更多的基本形状 766
14.7 绘制场景的明暗图 767
14.7.1 确定命中点处的法向量 768
14.7.2 根据对象的表面材料
为其着色 768
14.7.3 基于物理原理的明暗处理
模型:Cook-Torrance
明暗处理 770
14.8 加入表面纹理 776
14.8.1 实体纹理 777
14.8.2 在表面上粘贴图像 786
14.8.3 反失真光线追踪 788
14.9 范围的使用 789
14.9.1 框形范围和球形范围 790
14.9.2 投影范围的使用 795
14.10 加阴影以增加真实感 798
14.11 反射与透明 801
14.11.1 光的折射 803
14.11.2 处理shade( )中的
折射问题 807
14.12 复合对象:关于对象的布尔
运算 810
14.12.1 对CSG对象的光线
追踪 811
14.12.2 布尔对象的数据
结构 813
14.12.3 光线与布尔对象相交 816
14.12.4 构造和使用CSG对象
的范围 820
14.13 小结 822
14.14 案例分析 823
案例分析14.1 放射型光线
跟踪器 823
案例分析14.2 一种新型的光线
跟踪器 824
案例分析14.3 在光线跟踪器中
实现阴影处理 824
案例分析14.4 使用范围加速光
线跟踪过程 824
案例分析14.5 对3D纹理的
光线跟踪 824
案例分析14.6 反失真 825
案例分析14.7 对其他基本形状
的光线跟踪 825
案例分析14.8 一个用于研究
折射效应的2D
光线跟踪器 825
案例分析14.9 反射光和折
射光 825
案例分析14.10 对对象的布尔
组合进行光线
跟踪 825
14.15 进一步阅读 826
附录1 图形工具:获得OpenGL 827
A1.1 OpenGL的获取和安装 827
附录2 计算机图形学的数学研究 829
A2.1 一些关于矩阵及其运算的
主要定义 829
A2.1.1 矩阵的运算 830
A2.1.2 两个矩阵相乘 831
A2.1.3 矩阵的分块 833
A2.1.4 矩阵的行列式 834
A2.1.5 矩阵的逆矩阵 835
A2.2 向量及其运算的一些性质 837
A2.2.1 向量的正交;正交点积 837
A2.2.2 标量三重积 837
A2.2.3 三重向量积以及4个
向量的积 839
A2.3 复数的运算 839
A2.4 球坐标和方向余弦 842
附录3 一些有用的类以及实用例程 845
附录4 PostScript?简介 877
A4.1 关于PostScript语言 878
A4.1.1 准备事项 878
A4.1.2 PostScript是"基于
堆栈的" 879
A4.1.3 一些有关堆栈的操作符:
pop、dup、exch和
clear 880
A4.1.4 更高级的堆栈操作符 880
A4.1.5 一些算术操作符 881
A4.2 PostScript中的图形操作符 884
A4.2.1 坐标系及其变换 884
A4.2.2 路径构造动词 885
A4.2.3 圆弧 886
A4.2.4 用作绘图动词 887
A4.2.5 坐标变换 888
A4.2.6 图形状态操作符 892
A4.3 在PostScript中绘制文本 893
A4.4 定义新的变量和过程 894
A4.4.1 定义变量 894
A4.4.2 定义过程 895
A4.4.3 使用repeat实现一种
简单的迭代形式 899
A4.5 决策和迭代 901
A4.5.1 把布尔值作为参数的
动词 901
A4.5.2 判断 902
A4.5.3 迭代 904
A4.6 打印值 908
A4.7 绘制灰度图 909
附录5 SDL简介 912
A5.1 SDL文法 913
A5.2 SDL中的宏 917
A5.3 扩展SDL 917

下载价格:免费
立即下载
登入/注册
知识就是力量
没有账号? 忘记密码?