导图社区 计算机图形学
参照《计算机图形学 倪明田,吴良芝编著,北京大学出版社》总结而成。囊括了计算机图形学的基础内容,并配有相关图解加深理解。有助于刚入门的小伙伴学习和记忆。
编辑于2021-06-08 02:30:14计算机图形学
第1章 概述
图形
能够在人的视觉系统中形成视觉印象的客观对象
图形的表示方法
1、点阵法
2、参数法
第2章 线画图元
画直线
DDA 算法
Bresenham 算法(中点算法)
原理:正负划分性
画圆弧
正负法
多边形迫近法
第3章 填充图元
多边形表示方法
1、顶点表示
2、点阵表示
扫描多边形
逐点判断法
1. 射线法
2. 累计角度法
3. 编码法
扫描线算法
1. 原理
利用像素之间的连贯性,一次扫描一条水平线,判断点所处的位置
2. 边的连贯性
根据边的一点和斜率推出另一点,而不是计算交点
3. 交点取整规则
(a)向右取整(b)向左取整
(a)属于多边形(b)不属于多边形
4. 算法
(1)边的分类表(ET)
(2)活化边表(AEL)
边缘填充算法(*)
区域填充
区域的表示方法
1、内点表示
2、边界表示
种子填充法
将指定的颜色从种子点扩展到整个区域的过程, 区域填充算法要求区域是连通的
连通性
4 连通
8 连通
扫描线算法
当给定种子点时, 首先填充种子点 所在的扫描线上 的位于给定区域 的一个区段,然 后确定与这一区 段相通的上下两 条扫描线上位于 给定区域内的区 段,并依次保存 下来。反复这个 过程,直到填充 结束
字符表示
字符的表示方法
1、点阵表示
2、矢量表示
存储了字符笔画的信息
第4章 混淆与反混淆
混淆
用离散量(像素)表示连续的量(图形)而引起的失真,叫做混淆或走样
反混淆
在图形显示中,用于减少或消除混淆现象的方法,叫做反混淆
反混淆方法
1、提高分辨率
2、非加权区域采样
3、加权区域采样
第5章 二维裁剪
直线裁剪
Cohen-Sutherland 算法(编码算法)
Nicholl-Lee-Nicholl 算法
中点分割算法
从 P0 出发找出距离 P0 最近的可见点, 从 P1 出发找出距离 P1 最近的可见点
Cyrus-Beck 算法(参数化裁剪)
Liang-Barsky 算法
优化的 CB 算法。将二维裁剪降维到一维裁剪
总结
多边形裁剪
Sutherland-Hodgman 算法 (逐边裁剪算法)
Weiler-Athenton 算法
字符裁剪
基于字符串
基于字符
基于构成字符的最小元素
第6章 图形变换
二维基本变换
1. 平移变换
2. 旋转变换
3. 放缩变换
4. 对称变换
5. 错切变换
6. 仿射变换
三维基本变换
1. 平移变换
2. 旋转变换
3. 放缩变换
4. 对称变换
5. 错切变换
第7章 投影
三维形体的表示
1、线框模型
能看到形体的拓扑结构,表示简单,处理效率高
2、表面模型
每个面具有法向、纹理等属性,适合图形显示
3、实体模型
注重于体,方便进行运算,但是不能直接显示
投影
将三维物体转换为二维物体的过程
投影的分类
透视投影
灭点
不平行于投影面的平行线,经过透视投影后相交于一点,称为灭点
主灭点
平行于坐标轴的平行线的灭点,至多有 3 个
不保持平行关系,除非平行线平行于投影平面
平行投影
保持平行关系
视见体
透视投影:截头四棱锥 平行投影:长方体
前裁剪面 和 后裁剪面
三维图形显示流程图
三维裁剪
透视投影:视为一个截头四棱锥
平行投影:视为一个长方体盒子
第8章 三维实体的表示
表示形体的两种模型
1、数据模型
线框模型
表面模型
实体模型
2、过程模型
有效的条件
· 具有一定的形状
· 具有封闭的边界(表面)
· 内部连通
· 占据的空间有限
· 运算后仍然有效
特征表示
用一组特征参数表示一组类似的物体
特征包括形状特征、材料特征等
适用于工业上标准件的表示
物体信息
1、几何信息
反映图形中的点、线、面、体等几何要素的信息称为几何信息
2、拓扑信息
反映图形中的点、线、面、体等的连接顺序,层次关系的信息
表示方法
空间分割表示法
空间枚举表示
八叉树表示(Octree)
单元分解表示 Cell Decomposition
用不同的基本体素(不是单一的立方体)通过 “粘合”运算构造新的实体
推移表示(Sweep)
将物体 A 沿着轨迹 P 推移得到物体 B, 称 B 为 sweep 体
边界表示法(B-Reps)
1. 基本思想
物体的边界与物体一一对应,确定了物体的边界也就确定了物体本身
2. 半边数据结构
构造实体几何表示法(CSG)
将物体表示成一棵二叉树,称为 CSG 树 · 叶结点 : 基本体素 · 中间结点 : 正则集合运算
总结
第9章 曲线
曲线的表现形式
1、非参数表示
显示表示
隐式表示
2、参数表示
Hermite 曲线
Bezier 曲线
Bezier 曲线
有理 Bezier 曲线
通过调节权因子的大小,具有更强的造型功能
权因子越大,越接近控制顶点
缺点
1. 缺少局部性
2. 多边形与曲线的逼近程度较差
3. 表示复杂形状十分复杂
4. 不能表示圆锥曲线(除了抛物线)
B 样条曲线
均匀 B 样条
非均匀 B 样条
非均匀 B 样条
非均匀有理 B 样条(NURBS)
优点
1. 提供各种曲线的统一表示,涵盖了几乎所有的曲线
2. 形状控制方便,交互能力强
缺点
1. 计算复杂
2. 权重设计不合理,则会发生畸变
分段 Bezier 曲线
第10章 颜色模型
RGB
用于彩色光栅图形显示设备
CMY
用于硬拷贝设备(印刷业)
与 RGB 互为互补色
第11章 隐藏面的消除
提高效应算法效率的方法
连贯性
透视投影转平行投影
包围盒技术
背面剔除
空间分割技术
物体的层次表示
画家算法
算法思路
先将场景中的物体按其距观察者的远近排序,结果放在一张线性表中,然后按照从表头到表尾的顺序逐个画出
线性表构造。距观察点远的称优先级低,放在表头;距观察点近的称优先级高,放在表尾。该表称为深度优先级表
不能处理的情况
· 多边形循环遮挡
· 多边形相互穿透
解决方法
分割成两个
Z 缓冲器算法
帧缓冲器 – 保存各像素颜色值 z缓冲器 — 保存各像素处物体深度值
先将z缓冲器中个单元的初始值置为-1 (规范视见体的最小 n 值)。当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值,保存在该像素所对应的 Z 缓冲器的单元中。 · 如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色 · 否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变
优点
简单稳定,利于硬件实现
缺点
需要一个额外的 Z 缓冲器
计算量大
扫描线 Z 缓冲器算法
Z缓冲器算法中所需要的Z缓冲器容量较大。为克服这个缺点,可以将整个绘图区域分割成若干个小区域,然后一个区域一个区域地显示,这样 Z 缓冲器的单元数只要等于一个区域内像素的个数就可以了。如果将小区域取成屏幕上的扫描线就得到扫描线 Z 缓冲器算法
区域子分算法
优点
利用了像素的连贯性,将区域子分,找出这块区域
算法思路
首先将场景中的多边形投影到绘图窗口内。假设它为边长为 k 的正方形,判断窗口是否足够简单。若是则算法结束。否则,将窗口进一步分为四块:左上、右上、左下。右下。对此四个小窗口重复上述过程,直到窗口仅为一个像素大小。此时可能有多个多边形覆盖了该像素,计算它们的深度值,以最近的颜色显示该像素即可
光线投射算法
将通过绘图窗口内每一个像素的投影线与场景中的所有多边形求交。如果有交点,用深度值最大的交点,最近的所属的多边形的颜色显示相应的像素。如果没有交点,说明没有多边形的投影覆盖此像素,用背景色显示即可
第12章 真实感图形绘制
简单(局部)光照明模型
环境光
在空间中近似均匀分布,即在任何位置、任何方向上强度一样,记为Ia
环境光反射系数 Ka
在分布均匀的环境光照射下,不同物体表面所呈现的亮度未必相同,因为它们的环境光反射系数不同
光照明方程
漫反射亮度
光照明方程更新
phong光照模型
环境光
漫反射
镜面反射
多边形绘制方法
gauround 模型
光强插值
优点
· 计算量小
phong 模型
法向插值
双线性插值
优点
· 高光域集中
共同存在的问题
· 物体轮廓不够光滑
· 透视变换会变形
· 具有方向依赖性
· 公共顶点处颜色不连续
· 顶点法向不具有代表性
模拟物体表面细节
纹理映射
将平面图映射到物体表面上
阴影
软阴影
是指由理想点光源(即聚光性能好的单一光源)产生的阴暗均一、边界分明的阴影, 它只包含物体的本影
硬阴影
由线、面或体光源等产生的边界柔和、有一定明暗过渡的阴影,它包括了物体的本影和半影。当物体完全处于阴影中时,即在本影域内,而当物体受到部分光照时则处于半影域内
光线跟踪算法
终止条件
· 光线与环境中任何物体均不相交,或交于纯漫射面(背景)
· 被跟踪光线返回的光亮度值对像素颜色的贡献很小
· 已递归到给定深度