第3讲 计算机图形学基础
3.2.1 二维变换
点的变换可以通过矩阵运算来实现,令
T
a c
b d
称T为变换矩阵,有:
x'
y' x
y
a c
b d
ax
cy
bx dy
这里[x’,y’]为变换后点的坐标,[x,y]为变换前点的 坐标,变换矩阵中a,b,c,d的不同取值,可以实现各 种不同变换,从而达到对图形进行变换的目的 。Biblioteka • 二维基本变换dd
dd
圆弧的生成算法
典型算法有扫描转换算法、中点算法及Bresenham算法
y=-x
y y=x
M P P1
(x,y)
P2
椭圆的生成算法
p0 (0, b)
F F y x
F
y
F x
曲线的生成算法
包容盒计算
包围盒(大多采用矩形包容盒,也有球包容盒及其它包容盒)计
算是对图形元素进行求交、编辑和拾取的前提。
如图所示,画出的直线实际上是阶梯状,并不光滑。 因为计算机屏幕是离散象素组成,不是连续信号。象 素是有面积的,不可能面积为零。
线段反走样算法:将线段处理为有宽度的狭长矩形
抖动反走样算法:高分辨率计算,低分辨率显示
3.2 图形变换
• 图形变换的数学基础
– 向量运算 – 矩阵运算
• 二维变换 • 三维变换
iv)检测相邻点与边界和填充色是否相同,均不 相同则填充该点;
v)重复步iv)直至所有象素点被填充。
该算法直接基于象素算法,不必求交。
表示边界点
裁剪算法
确定图形中哪些部分落在显示区之内,以便显示落在显示区内的那 部分图形。这个选择过程称为裁剪 只有窗口内的物体才能显示出来。因此,窗口之外的物体都是不 可见的,可以不参加标准化转换及随后的显示操作,节约处理时 间。裁剪(clipping)是裁去窗口之外物体的一种操作。
因此,组合的顺序一般是不能颠倒的,顺序不同, 则变换的结果亦不同,如图所示。
3.2.2 三维图形变换
三维图形的变换是二维图形变换的简单扩展,变换 的原理还是把齐次坐标点(x,y,z,1)通过变换矩阵变换 成新的齐次坐标点(x’,y’,z’,1),即
x' y' z' 1 x y z 1 T
其中T为三维基本(齐次)变换矩阵:
1 Tmx 0
0 -1
对原点的对称变换:
-1 0
Tmo
0
- 1
旋转变换
在二维空间里,我们作如 下规定:图形的旋转是指绕 坐标系原点旋转θ角,且逆 时针为正,顺时针为负,变 换矩阵为
cos sin
Tr sin
cos
x' Rcos Rcoscos Rsinsin xcos ysin y' Rsin Rsincos Rcossin ycos xsin
SetPixel (int x, int y, color c);
计算机图形学的研究内容
探讨的主要问题是用计算机进行图形信息的表达、输入、存储、显 示、输出、检索及图形运算等。具体地说,大致有以下内容:
(1)图形的输入:研究如何把要处理的图形输入到计算机内,以便 让计算机进行各种处理。
(2)产生图形的算法:研究在显示器或其它输出设备上产生图形的 各种算法;
但有些变换仅用一次基本变换是不够的,必须由两 次或多次基本变换组合才能实现。这种由多种基本 变换组合而成的变换称之为组合变换,相应的变换 矩阵叫做组合变换矩阵。
设坐标P经过n次变换T1,T2,…,Tn到P*,则变换结果 为: P* = PT1T2…Tn = PT
式中,T = T1T2…Tn 为总的变换矩阵,组合变换的 目的是将一个变换序列表示为一个变换矩阵。
区域填充算法
区域填充即给出一个区域的边界,要求对边界范围内的所有象素 单元赋予指定的颜色代码。区域填充中最常用的是多边形填色
填色算法分为两大类:扫描线算法和种子点算法
(1)扫描线填色(Scan-Line Filling)算法
这类算法建立在多边形边边界的矢量形 式数据之上,可用于程序填色,也可用 交互填色。
复杂组合图形的包容盒则可以在简单图形的包容盒基础上 进行比较得到。
求交算法
求交计算是常用算法。区域填充时要求线段交点, 消隐算法需要直线和平面多边形的求交等。
求交运算比较复杂,为减小计算量,求交计算前, 先用凸包进行粗略比较,先排除显然不相交情形。
求交计算是CAD系统的重要部分,其准确性与效率 直接影响CAD系统的可靠性与实用性。
图形的具体应用范围很广,但是从基本的处理技术看只有两类:
一类是线条,如工程图、地图、曲线图表等;
另一类是明暗图,与照片相似。为了生成图形,首先要有原 始数据或数学模型,如工程人员构思的机械零件模型,飞机 的总体方案模型,地形航测的判读数据等等。这些数字化的 输入经过计算机处理后变成图形输出。
在此仅从CAD需求角度来介绍相关研究内容: 工程产品设计中的二维工程图、三维实体模型的显示 本章主要介绍:二维基本图形生成原理、图形变换原理、图 形显示流程
(2)种子填色(Seed Filling)算法
这类算法建立在多边形边界的图象形 式数据之上,并需提供多边形界内一 点的坐标,一般只能用于人机交互填 色,而难以用于程序填色。
表示内点
从多边形内部点出发,沿四个方向(或八个方向)
扩散搜索区域内所有待填充的象素点,适用于交 互绘图。其算法步骤:
i)多边形边界给特定颜色; ii)内部填充颜色给另外的颜色; iii)从内部点 ( x, y ) 开始,检测该点与边界和 填充色是否相同,均不相同则填充该点;
3. 计算机图形学基础
3.1 基本图形的生成
简单图形的生成 区域填充和剖面线 裁剪
3.2 图形变换
二维变换 三维变换 投影变换
3.3 图形显示流程
显示器显示原理
常规显示器上的图形由荧光屏的点阵组 成,电子束按行列次序扫描点矩阵,并 由显示内容来控制所扫描的点是否发亮, 每扫描一遍称为一帧
荧光屏上画面的每一点称为一个象素(Pixel)。每个象素都对 应于Buffer中的一个存储单元,里面存放着该象素的显示亮度值。 象素的亮度值控制电子束对荧光屏的轰击强度,象素在帧缓存 寄存器中的位置编码控制电子束的偏转位置。 分辨率(Resolution)是光栅扫描显示设备最重要的指标 显示器用于显示字符、图形(触摸显示屏还可作为输入设备)
(3)图形的数据结构:研究图形在计算机内的表示方法; (4)图形的变换:研究图形的各种几何变换; (5)图形运算:包括图形的分解、组合等; (6)图形语言:各种图形处理功能的语言; (7)图形软件的标准化:图形软件与设备无关及接口兼容性。
总的来说,计算机图形学应该解决和研究下列一些问题: (1)图形表示和处理的数学方法及其实现的计算机算法; (2)设计一个好的图形软件系统; (3)设计与实际应用相结合的图形应用系统。
而这里的cy,bx均非常量,因此用原来的2×2的变 换矩阵是无法实现平移变换。
将变换矩阵增加一行一列,实 施对点进行平移变换
1 0 0
x
y 1 x
y
1
0
1
0
xl
ym
1
l m 1
齐次坐标
在平移变换中,我们将[x y]扩充为[x y 1] 实际上 是由二维向量变为三维向量。
这种用三维向量表示二维向量的方法叫做齐次坐标 法。进一步推广,用n+1维向量表示n维向量的方法 称之为齐次坐标法。
剖面线算法
剖面线是一组等距的平行线,用填充算法 速度慢,直接画线更快,算法步骤:
i) 按多边形的初始条件及剖面线的角度和 间距,计算剖面线的范围和数量;
ii) 求剖面线与轮廓边的相交位置; iii)对剖面线上的交点进行排序,并按奇偶 规则绘制有效剖面线段。 简化算法:跳过顶点处交点判断
图形反走样算法
– 比例变换 – 对称变换 – 错切变换 – 旋转变换 – 平移变换
• 二维组合变换
比例变换
在变换矩阵 阵
T
a c
中db, 令b=c=0,则为比例变换矩
a 0 Ts 0 d
a, d 0
其中a,d分别为x,y方向上的比例因子
对称变换
对坐标轴的对称变换
1.对y轴对称:
-1
Tmy
0
0 1
2.对x轴对称:
绕任意点旋转变换
平面图形绕任意点C(x,y)旋转θ角,需要通过以下几 个步骤来实现: (1)将旋转中心平移到原点; (2)将图形绕坐标系原点旋转θ角; (3)将旋转中心平移回到原来位置。
组合变换顺序对图形的影响
复杂变换是通过基本变换的组合而成的,由于矩阵 的乘法不适用于交换律,即:
[A][B] ≠[B][A]
在w=1的平面上有点P1(x,y,1),则当w 由0变化到无穷时,齐次坐标 Pw(xw,yw,w) 将处在由OP1定义的射 线OQ上。二维坐标则是该射线在w= 1平面上的交点, 有
x xw ,y yw
w
w
二维齐次变换表示了在w=1平面上点的坐标变换,即P1到 P1*的坐标变换
齐次坐标的特点
1. 当w=0时,齐次坐标可用来表示无穷远的点
求交问题可以分为两类 : 求交点:线线求交、线面求交 求交线:面面求交
注意:在数学上两个浮点数可以严格相等,但计算机表示的浮点数有误差, 难以绝对相等,相应地,求交运算中要引进容差。 i)当两个点的坐标值充分接近时,即其距离充分近时,就被认为是重合的 点,一般取∆ =10-6或更小的数。 ii)当两条直线的夹角接近0度(一般取∆ =10-6或更小)时,就被认为 是两条平行线。 iii)同样,共线、共面、平行面等的判断也是近似的。
对字母T进行旋转变换(旋 转60°)