计算机图形学复习重点总结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
dy⎥⎥
计算
⎢ ⎢
y1'Baidu Nhomakorabea⎥
=
⎢⎢0
1
dy
⎥ ⎥
•
⎢ ⎢
y1⎥⎥
⎢⎣0 0 1 ⎥⎦
⎢⎣ 1 ⎥⎦ ⎢⎣0 0 1 ⎥⎦ ⎢⎣ 1 ⎥⎦
⎡Sx 0 0⎤
缩放变换矩阵:
S
(dx,
dy)
=
⎢ ⎢
0
Sy 0⎥⎥
⎢⎣ 0 0 1⎥⎦
计算与平移类似
旋转变换矩阵:
⎡cosθ
R(θ ) = ⎢⎢sinθ
⎢⎣ 0
为不可见部分。
3.5 反走样 3.5.1 反走样概念 在光栅显示器上显示图形时,直线段或图形边界或多或少会呈锯齿状。 原因是图形信号是连续的,而在光栅显示系统中,用来表示图形的却是一个 个离散的象素。这种用离散量表示连续量引起的失真现象称之为走样 (aliasing);用于减少或消除这种效果的技术称为反走样(antialiasing)。 3.5.3 反走样现象 光栅图形的走样现象除了阶梯状的边界外,还有图形细节失真(图形中的 那些比象素更窄的细节变宽),狭小图形遗失等现象。 3.5.2 反走样技术 常用的反走样方法主要有:提高分辨率、区域采样和加权区域采样 1)提高分辨率
4.1 齐次坐标 4.2 四种基本几何变换 4.2 复合几何变换
第五章 曲线和曲面
5.1 三种曲线的性质及性质分析
第六章 颜色空间(color)
6.1 简单的颜色空间的特点及其应用
第三章 二维图形的基本光栅图形学算法
3.1 直线的扫描算法(中点线扫描算法) (1)
(2)
(3)算法
3.2 填充多边形(Y—X扫描算法)
区域填充是光栅系统的一大亮点,优于向量系统
区域填充利于物体的真实感建模
1. 原理
对任一条扫描线,确定该扫描线与多边形边的交点位
置,自左向右存储,并对每对内部交点间的帧缓存填
写指定颜色
2 .步骤
A)求交 求扫描线与多边形各边交点
B)排序 按 x 递增顺序对交点排序
C)交点匹配 1-2,3-4,5-6等
D)填充 填充每对交点间在多边形区域内部的象素。
3. 解决几个问题
a) 扫描线与多边形顶点相交:计算交点个数时,仅对边的
ymin 顶点计数,ymax 顶点不计
b) 边界象素的取舍:若填充段端点为实数,左端点向上取整,右端点向
下取整。若填充段端点为整数,左端点填充,右端点不填充
c) 水平边不考虑交点。
方法:将显示器分辨率提高一倍,直线经过两倍的象素,锯齿也增加一倍,但同时
每个阶梯的宽度也减小了一倍,所以显示出的直线段看起来就平直光滑了一些。 特点:方法简单,但代价非常大。显示器的水平、竖直分辩率各提高一
倍,则显示器的点距减少一倍,帧缓存容量则增加到原来的4倍,而扫描转 换同样大小的图元却要花4倍时间。而且它也只能减轻而不能消除锯齿问题。
}
练习: 已知下图多边形顶点坐标顺序为(1,1)(2,4)(4,1)(4,6)(0,6)。用 扫描线算法对其实现扫描转换时,边表 ET 和全部活性边表 AET 的内容。
3.3 线段裁剪(Cohen-Sutherland 矩形裁剪线段) A)裁剪定义 计算机图形处理时,存储区的图形可以大于屏幕显示尺寸,屏幕窗口显示图 像的一部分,该过程就是裁剪。 B)思想:算法分两部分: 1)首先识别出完全位于矩形裁剪区域内部或外部的线段,简单接受或拒 绝。 2)非第一种情况时,考虑求线段和裁剪窗口交点,把线段分为两段,进行判断
d)特殊情况:填充区域狭窄,许多扫描线上按规则一个象素都不能画 ,
反走样处理,不严格遵守填充规则-“只填充多边形内部、多边形左边线和
底线边的象素”
e) 增量法取代求交点
4 .算法设计
A)E 结构
每条扫描线具有一个链表,包含与其相交边的信息
struct E
{
double ymax;
// 边的上顶点 y 值
第四章 几何变换
4.1 齐次坐标 概念:就是用 n+1维矢量表示 n 维矢量 例如:在二维平面中,点 P(x , y)的齐次坐标表示为(wX,wY,w), 规范化齐次坐标为(X ,Y ,1);三维齐次坐标为:(wX,wY,wZ,w), 规范化齐次坐标为(X ,Y ,Z ,1)。 目的 :为了使图形几何变换表达为图形顶点集合矩阵与某一变换矩阵相
2)区域采样 方法: 区域采样方法假定每个象素是一个具有一定面积的小区域,将直 线段看作具有一定宽度的狭长矩形。当直线段与象素有交时,求出两者相交 区域的面积,然后根据相交区域面积的大小确定该象素的亮度值。
特点:1)象素中心离线越近,亮度受到的影响越小; 2)若象素点未被覆盖,则亮度不受影响; 3)等覆盖面积贡献等辉度。
[ ] x'(t) = 3t 2 2t 1 0 * M H *GHx
x'(0) = R1x = [0 0 1 ]0 * M H *GHx x'(1) = R4x = [3 2 1 ]0 * M H *GHx
缺点:1)象素的亮度与相交区域的面积成正比,而与相交区域落在象素内的位
置无关,这仍然会导致锯齿效应。 2)直线条上沿理想直线方向的相邻两个象素有时会有较大的灰度差。
3)加权的区域采样 相交区域对象素亮度的贡献依赖于该区域与象素中心的距离。当直线
经过该象素时,该象素的亮度 F 是在两者相交区域 A´上对滤波器(函数 w) 进行积分的积分值 。
− sinθ 0⎤ cosθ 0⎥⎥
0 1⎥⎦
计算与平移类似
错切变换矩阵:
⎡1 a 0⎤
⎡1 0 0⎤
X 方向: SHx = ⎢⎢0 1 0⎥⎥ Y 方向: SHy = ⎢⎢b 1 0⎥⎥
⎢⎣0 0 1⎥⎦
⎢⎣0 0 1⎥⎦
4.2 复合几何变换 概念:复合几何变换指做了一次以上的几何变换,先对单个点进行基本几何 变换合成,得到几何变换合成矩阵。然后与已知点的规范化齐次坐标矩阵相乘得 到需要的结果 例子: 旋转几何变换(绕 P1旋转):1)平移使得 P1位于原点,2)旋转度数。 3)平移使得 P1回到原来的位置
例子如下:
C)活跃边表 AET 与当前扫描线相交的边称为活性边,按与扫描线交点 x 坐标递增的顺序存放在一个链
表中,称此链表为活性边表(AET)
D)算法伪伪代码 void polyfill (polygon, color) { 建立全局边表: for (各条扫描线 i ) { 把 ymin == i 的边结构->边表 ET [i] } y = 最低扫描线号;
乘的问题,引入了规范化齐次坐标。 4.2 四种基本几何变换
二维变换矩阵
⎡a b p⎤
T = ⎢⎢c
d
q
⎥ ⎥
⎢⎣l m s ⎥⎦
⎡x1 x2 ... xn⎤
二维规范化齐次坐标矩阵
P
=
⎢ ⎢
y1
y2
...
yn⎥⎥
⎢⎣ 1 1 ... 1 ⎥⎦
⎡a b⎤
T 从功能上讲可以把二维变换矩阵 T 分为4个子矩阵。其中
选择一个在外面的点,检测它的外码找到一条会与该线相交的边(非0位对应边),求 出交点。舍弃外端点和交点间的一段,并将交点做为裁剪后线段的一个新端点,计算其编码 (修改了 P1或 P2),准备下一次循环(goto Init)。
}
3.4 多边形裁剪(SH 裁剪算法) A)Sutherland-Hodgman 算法思想: 分而治之:先解决简单问题,即用一条无穷长的裁剪边来裁剪一个多边形;
1 = ⎢⎣c
d
⎥ ⎦
是对
T 图形进行比例,旋转,反射和错切变换。 = [l 2
m]是对图形进行投影变换;
⎡ p⎤
T3
=
⎢ ⎣
q
⎥ ⎦
是对图形进行平移变换。
T 4 = [s] 是对图形进行整体比例变换
(这里按图形学书上的来)
⎡1 0 dx⎤
⎡x1'⎤ ⎡1 0 dx⎤ ⎡ x1⎤
平移变换矩阵: T (dx, dy) = ⎢⎢0
种曲线 两个端点和两端点处的切向量定义 Hermite 曲线; 两个端点和另外两个控制端点切向量的点定义的 Bezier 曲线; 由四个控制顶点定义的 B 样条曲线。 2)Hermite 曲线 由端点 P1、P4和端点处切向量 R1、R4的约束确定 ,其几何矩阵为
[ ] GH = P1 P4 R1 R4 T
在此基础上用裁剪窗(多边形)的各条边依次对多边形进行连续的裁剪操作。 该算法输入参数多边形的一串顶点 v1,v2…vn,相对于一条无穷长边裁剪输出
结果是裁剪后新多边形的一串顶点 v1’,v2’…vm’,随后对刚得到的多边形, 相对第二条裁剪边进行裁剪,如此继续,直至对所有裁剪边裁剪结束。 B)操作过程:
[ ] 切向量 d Q(t) = Q'(t) = d (T *C) = 3t2 2t 1 0 *C
dt
dt
3) 曲线段之间的连续性:几何连续 Gi 与参数连续 Ci G0 连续(C0):两条曲线段拼接成一条曲线。 G1连续: 两条曲线段拼接点处切向量方向相同。若相等(方向、大小)C1一阶参数连 续 Gn连续:两条曲线段拼接点处切向量的阶导数方向相同。 n 阶导数相等 称曲线是 Cn 连续的
double x_Intersection;
// 扫描线与边的交点的 x 值
double dx;
// 单位高度 x 方向偏移量
E * pointer ;
// 该扫描线相交的下一条边
}
B)边表 ET 初始化时建立全局边表(ET),包含多边形所有边,按边端点的 ymin 排序存放。即:
若该边的下端点为 ymin,则该边就放在扫描线 ymin 对应的链表中。每条扫描线交的多 边形的边按其下端点的 x 坐标增序排列。
T T T 公式: P' = T • P 其中 T 为复合矩阵 T = •......• •
n
2
1
注意:进行复合变换时,需要注意矩阵相乘的先后顺序,矩阵乘法不可交 货
故先算 复合矩阵 T 再计算 P' = T • P
第五章 曲线和曲面
5.1基础知识 1)为什么参数曲线次数为3? 低于三次的函数控制曲线形状时不够灵活,高于三次的曲线会增加不必要的 摆动其增加计算量。三次参数曲线是三维空间中次数最低的非平面曲线。 2)三次参数曲线方程
曲线函数:
[ ] x(t) = axt 3 + bxt 2 + cxt + dx = T *Cx = T * M H *GHx = t 3 t 2 t 1 * M H *GHx
x(0) = P1x = [0 0 0 1]* M H *GHx
t = 0、1代入,得到其边界 P1、P4约束:x(1) = P4x = [1 1 1 ]1 * M H *GHx
沿多边形的边从顶点 vn 移动到 v1,再顺序移动回 vn,每次移动,检测连续的 两个顶点与裁剪边的相互关系。每步移动,对于裁剪后的多边形顶点序列,可能 会增加0个、1个或2两个顶点。四种情况
C) 分割处理策略: 1)将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。 2)对于窗口的每一条边将平面分为2部分:包含于窗口的一侧称为可见部分,另一侧称
做个例子 :证明如下的两条三次曲线段达到 C2连续,并画出两条曲线段。
[ ] P1 = − 2t3 + 3t 2 + 9t + 7, − 3t 2 + 3t + 5
[ ] P2 = 2t3 − 3t 2 + 9t +17, 3t3 − 3t 2 − 3t + 5
5.2三种曲线的性质及性质分析 1)曲线段可以用端点、切向量和曲线段之间的连续性等约束条件来定义三
计算机图形学重点
——— 嘟嘟游制作
第三章 二维图形的基本光栅图形学算法
3.1 直线的扫描算法(中点线扫描算法) 3.2 填充多边形(Y—X扫描算法) 3.3 线段裁剪(CS 裁剪算法) 3.4 多边形裁剪(SH 裁剪算法) 3.5 反走样
3.5.1 反走样概念 3.5.2 反走样技术
第四章 几何变换
初始化活性边表 AET 为空; for (各条扫描线 i ){
(1) 把边表 ET[i]中的边结点插入 AET 表; (2) 遍历 AET 表,把 y max== i 的结点从 AET 中删除,并按 x 坐标值增序排列各边;
(3) 把配对交点区间(左闭右开)上的象素(x, i),用 SetPixel (x, i, color)改写颜色值; (4) 把 AET 中每条边结点的 x 值递增△x; }
去掉其中一段或两段,转 1)。 C)分析及实现 :平面被分为9个区域,每个区域内统一编码。任一个点 P(x,y)用
四位01编码 CtCbCrCl 表示。
直线段:P1 = CtCbCrCl_1, P2 = CtCbCrCl_2 算法描述 Init: if ( P1 & P2 ≠ 0) 线段舍去; else if(P1 | P2 ==0) 完全显示; else {