计算机图形学 第五讲 图形变换
《计算机图形学》05 图形的几何变换解析
o
x
o
T1 = 1 0 0 0 1 0 C/A 0 1
x
o
T2=
x
cosα -sinα 0 sinα cosα 0
0
0
1
y
y
y
o
T3 = 1 0 0 0 -1 0 0 0 1
x
o
x
o
T5=
x
1 0 0 0 1 0 -C/A 0 1
cosα sinα 0 T4 = -sinα cosα 0 0 0
1
组合变换矩阵为: cos2α sin2α T =T1×T2×T3×T4×T5= sin2α -cos2α (cos2α-1)C/A sin2α*C/A 0 0 1
原图形上的任意一点 P(x,y) 对该直线的对称变换都可用下
式实现 : [x* y* 1]=[x y 1]· T
5.3 三维图形变换
三维变换矩阵可表示为: T= a d g l b e h m c p f q i r n s
h),h是任一不为0的比例系数。 给定一个点的齐次坐标表示 : (x,y,h), 该点的二维笛卡儿直角坐标: (x / h,y / h)。 同样,对于一个三维空间的向量(x,y,z), 它在四维空间 中对应的向量即齐次坐标为 (x×h ,y×h , z×h , h) ,其中 h≠0 。 齐次坐标的概念可以推广到 n 维空间的向量。齐次坐标的 表示不是唯一的,通常当h=1时,称为规格化齐次坐标。
5.2 二维图形变换
采用齐次坐标可将二维图形变换表示成如下形式: a d 0 [ x* y* 1 ] = [ x y 1 ] b e 0 c f 1 P*
变换后的 顶点坐标
=
P
变换前的 顶点坐标
计算机图形学第5章几何变换
北大计算机系多媒体与人机交互
33
5.9 三维空间的几何变换
❖ 三维奇次坐标
(x,y,z)点对应的齐次坐标为
(xh,yh,zh,h)
标准齐次坐标(x,y,z,1)
❖ 右手坐标系
北大计算机系多媒体与人机交互
34
第五章 几何变换
❖ 5.1 基本的二维几何变换 ❖ 5.2 矩阵表示和齐次坐标 ❖ 5.3 逆变换 ❖ 5.4 二维复合变换 ❖ 5.5 其它二维变换 ❖ 5.6 几何变换的光栅方法 ❖ 5.7 二维坐标系间的变换
❖问题:如何实现复杂变换?
变换分解
变换合成
❖关于任意参照点 Pr(xr,的yr)旋转变换
北大计算机系多媒体与人机交互
15
5.4 二维复合变换
❖关于任意参照点 Pr(xr,的yr)放缩变换
北大计算机系多媒体与人机交互
16
5.4 二维复合变换
❖变换的结果与变换的顺序有关
矩阵乘法 不可交换!
Translate2D(1,0); Rotate2D(45);
北大计算机系多媒体与人机交互
y
(0,3/2)
(0,1/2)
xref=-1
(1,2) (1,1)
x
25
第五章 几何变换
❖ 5.1 基本的二维几何变换 ❖ 5.2 矩阵表示和齐次坐标 ❖ 5.3 逆变换 ❖ 5.4 二维复合变换 ❖ 5.5 其它二维变换 ❖ 5.6 几何变换的光栅方法 ❖ 5.7 二维坐标系间的变换
❖ 为什么需要齐次坐标?
多个变换作用于多个目标
变换合成 变换合成的问题 引入齐次坐标
P’=T.P P’=S·P P’=R·P
变换的表示法统一
北大计算机系多媒体与人机交互
计算机图形学理论及应用技术 第5章 图形变换
2. 图形变换的定义内容 (1) 对图形变换类型的定义。
(2) 定义图形齐次变换矩阵的构造方法。
5.4 立体图形的几何变换 5.4.1 立体图形的比例变换和平移变换阵 设Sx、Sy和 Sz分别为X方向、Y方向和Z方向的比例系数, 比例变换矩阵 S,设Tx、Ty和Tz分别为X方向、Y方向和 Z方向的平移量,平移变换矩阵T。根据平面图形的图形 变换矩阵可以推出:
Sx 0 S 0 0 0 Sy 0 0 0 0 Sz 0 0 0 ; 0 1 1 0 T 0 T x 0 1 0 Ty 0 0 1 Tz 0 0 . 0 1
5.6.2 向视平面坐标系转变的方法 视平面转换的方法有两种: (1)直接转换视平面,使之与物体坐标系重合。 (2)将物体坐标系转换,使它与视平面坐标系重合。 1. 视平面变换步骤 视平面变换需要以下3个步骤进行。 (1) 将物体坐标系原点移到视图参考点上,再沿视平面的 法向量平移视距,使两个坐标系原点相重合。 (2) 将物体坐标系旋转,使它的Z轴与视平面的法向量重 叠。这时的Z轴称之为Z' 轴。这个过程分两步进行: 1) 将物体坐标系绕 X 轴旋转,使物体坐标系的 Z 轴落在 X'OY' 平面上。 2) 将物体坐标系绕Y轴旋转,使Z轴与视平面法向量(Z' 轴) 重叠。 (3) 将物体坐标系绕Z轴旋转,使两个坐标系的X轴、Y轴 相重合。
5.3.1 窗口/视口变换的基本方法 5.3.2 窗口/视口变换矩阵的求法
计算机图形学图形变换
计算机图形学图形变换实验五:图形变换⼀、实验⽬的:1、掌握图形变换的基本⽅法。
2、初步掌握映射菜单消息和捕获键盘消息的⽅法。
⼆、实验内容及要求:1、以三⾓形为例,使⽤Visual C++实现⼆维图形的平移、旋转和缩放功能。
2、每⼈单独完成实验。
3、按要求撰写实验报告,写出实验⼼得,并在实验报告中附上程序的核⼼算法代码。
三、实验设备:微机,Visual C++6.0四、实验内容和步骤:1、打开VC,新建⼀个MFC Appwizard项⽬,选择创建单⽂档⼯程(SDI⼯程)。
假设⼯程名为Transform。
如图1和图2所⽰。
图1图22、在图2的界⾯上点击Finish,完成⼯程的创建。
3、在TransformView.h⽂件中,加⼊如下代码:public:CPoint Pt[3]; //存储三⾓形的三个顶点float dAngle; //存储三⾓形旋转的⾓度4、在类CTransformView的构造函数中定义三⾓形的三个顶点的初始坐标和dAngle的初值,代码如下;CTransformView::CTransformView(){// TODO: add construction code herePt[0].x = 200; Pt[0].y = 220;Pt[1].x = 260; Pt[1].y = 300;Pt[2].x = 360; Pt[2].y = 180;dAngle = 0.0;}5、在类CTransformView中添加成员函数void DrawTriangle(CDC *pDC),并实现该函数。
(该部分代码请同学们⾃⼰实现,为了简便编程,可以使⽤MoveTo和LineTo函数,也可以调⽤⾃⼰在实验2中编写的DDA或者Bresenham画线函数);6、在类CTransformView的OnDraw()函数中添加绘制三⾓形的代码;void CTransformView::OnDraw(CDC* pDC){CTransformDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data here}7、映射菜单消息,⽅法是打开ResourceView菜单,依次展开MENU \ IDR_MAINFRAME,添加“图形变换”主菜单项,在其下添加“平移”,如图3所⽰。
计算机图形学-图形变换与裁剪投影变换
平面几何投影(4/17)
n 投影线 n 从投影中心向物体上 各点发出的射线 n 直线—光线 n 曲线—喷绘
n 平面几何投影 n 投影面是平面 n 投影线为直线
n 投影变换 n 投影过程 n 投影的数学表示
11
平面几何投影(5/17)
n 投影分类
投影中心与投影平面之间的距离为有限
投影中心与投影平面之间的距离为无限
第五章 图形变换与裁剪
投影变换
哈尔滨工业大学计算机学院 苏小红
1
基本内容
1 三维图形的基本问题 2 平面几何投影
平行投影 透视投影
2
三维图形的基本问题(1/5)
1. 在二维屏幕上如何显示三维物体?
n 显示器屏幕、绘图纸等是二维的 n 显示对象是三维的 n 解决方法----投影 n 三维显示设备正在研制中
n 解决方法 n 建立光照明模型 n 开发真实感图形绘制方法
6
三维图形的基本问题(5/5)
三维图形的基本研究内容
1. 投影 2. 三维形体的表示 3. 消除隐藏面与隐藏线 4. 建立光照明模型、研究真实感图形绘制方法
7
平面几何投影(1/17)
n 照像机模型与投影
n 如何投影? n 生活中的类比--如何拍摄景物?
12
平面几何投影(6/17)
透视投影
平行投影
13
平面几何投影(7/17)
n 平行投影
n 投影中心与投影平面之间的距离为无限 n 是透视投影的极限状态
投影方向
投影平面
14
平面几何投影(8/17)
n 正投影与斜投影
正平行投影
斜平行投影
15
平面几何投影(9/17)
n 三视图:正视图、侧视图和俯视图
计算机图形学课件第五章
计算机图形学
三维几何变换
绕任意轴的旋转变换(详见教材P371)
已知空间有一任意轴AB,A点坐标为(XA,YA,ZA), AB的方向数为(a,b,c)。空间一点P(x,y,z)绕 AB逆时针旋转θ角后变成P’(x’,y’,z’)。若旋转变换矩 阵为Rab,则有
[x’ y’ z’ 1]=[x y z 1]*Rab 下面讨论如何求出Rab的表达式。 基本思想:先平移坐标系,使A点成为新坐标系AX’Y’Z’的 原点;再使AB分别绕x’轴和y’轴旋转适当角度,使AB与z’ 轴重合,那么绕AB转θ角就变成了绕z’轴旋转θ角;最后, 再作逆变换,使AB回到原来的位置。
P P T
x P y
x P y
t x T t y
x x t x y y ty
计算机图形学
点的基本变换
旋转变换
–
–
点P(x,y,)的极坐标表示 x=rcosφ,y=rsinφ 绕坐标原点旋转角度 (逆时针为正,顺时针为负)
x1 y 1 x2 y2 x3 x n y3 y n
或
对图形的几何变换就可以归结为对点的变换
计算机图形学
二维图形的变换
点的基本变换 平面图形的变换 平面图形变换的齐次坐标表示 复合变换及变换的模式 其它变换
计算机图形学
一、点的基本变换
平移变换
变换的数学基础
u x U u y u z
vx V v y vz
矢量
–
矢量和
u x vx U V u y v y u z vz
计算机图形学实用教程第5章 图形变换与裁剪2
4
三维图形显示的基本问题(3/5)
3. 如何反映遮挡关系?
物体之间或物体的不同部分之间存在相互遮挡关系 遮挡关系是空间位置关系的重要组成部分 解决方法----消除隐藏面与隐藏线
5
三维图形显示的基本问题(4/5)
4. 如何产生真实感图形
何谓真实感图形? 逼真的 示意的 人们观察现实世界产生的真实感来源于
y
0 0 Tw 0 0 0 0 0 cos90 sin 90 1 0 0 sin 90 cos90 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 x L 0 0 0 1 0 0 0 1 0 0 0 1
3
三维图形显示的基本问题(2/5)
2. 如何表示三维物体?
二维形体的表示----直线段,折线,曲线段,多边形区域 二维形体的输入----简单(图形显示设备与形体的维数一致)
三维形体的表示----空间直线段、折线、曲线段、多边形、
曲面片 三维形体的输入、运算、有效性保证----困难 解决方法----各种用于形体表示的理论、模型、方法
10
平面几何投影(4/15)
投影线 从投影中心向物体上各点发出的射线 直线—光线 曲线—喷绘 平面几何投影
投影面是平面
投影线为直线 投影变换
投影过程
投影的数学表示
11
平面几何投影(5/15)
投影分类
投影中心与投影平面之间的距离为有限
投影中心与投影平面之间的距离为无限 是透视投影的极限状态
R yx
1 0 T R yx 0 0
0 1 0 0
0 0 0 0
计算机图形学-第五章-图形变换
第五章图形变换重点:掌握二维几何变换、二维观察变换、三维几何变换以及三维观察变换。
难点:理解常用的平移、比例、旋转变换,特别是复合变换。
课时安排:授课4学时。
图形变换包括二维几何变换,二维观察变换,三维几何变换和三维观察变换。
为了能使各种几何变换(平移、旋转、比例等)以相同的矩阵形式表示,从而统一使用矩阵乘法运算来实现变换的组合,现都采用齐次坐标系来表示各种变换。
齐次坐标系齐次坐标系:n维空间中的物体可用n+1维齐次坐标空间来表示。
例如二维空间直线ax+by+c=0,在齐次空间成为aX+bY+cW=0,以X、Y和W为三维变量,构成没有常数项的三维平面(因此得名齐次空间)。
点P(x、y)在齐次坐标系中用P(wx,wy,w)表示,其中W是不为零的比例系数。
所以从n维的通常空间到n+1维的齐次空间变换是一到多的变换,而其反变换是多到一的变换。
例如齐次空间点P(X、Y、W) 对应的笛卡尔坐标是x=X/W和y=Y/W。
将通常笛卡尔坐标用齐次坐标表示时,W的值取1。
采用齐次坐标系可以将平移、比例、旋转这三种基本变换都以相同的矩阵形式来表示,并统一地用矩阵乘法来实现变换的组合。
齐次坐标系在三维透视变换中有更重要的作用,它使非线形变换也能采用线形变换的矩阵表示形式。
5.1 二维几何变换二维几何变换就是在平面上对二维点的坐标进行变换,从而形成新的坐标。
二维几何变换主要包括:平移、比例、旋转、对称、错切、仿射和复合变换。
5.1.1 二维平移变换如图所示,它使图形移动位置。
新图p'的每一图元点是原图形p中每个图元点在x和y方向分别移动Tx和Ty产生,所以对应点之间的坐标值满足关系式x'=x+Txy'=y+Ty可利用矩阵形式表示成:[x' y']=[x y]+[Tx Ty]简记为:P'=P+T,T=[Tx Ty]是平移变换矩阵(行向量)。
从矩阵形式来看,平移变换是矩阵加法,而比例和旋转变换则是矩阵乘法。
计算机图形学实验五:图形变换
贵州大学实验报告学院:计算机科学与技术专业:计算机科学与技术班级:计科131实验内容#include"stdafx.h"#include<glut.h>#include<stdlib.h>#include<math.h>GLsizei winWidth = 600, winHeight = 600;GLfloat xwcMin = 0.0, xwcMax = 225.0;GLfloat ywcMin = 0.0, ywcMax = 225.0;class wcPt2D{public:GLfloat x, y;};typedef GLfloat Matrix3x3[3][3];Matrix3x3 matComposite;const GLdouble pi = 3.14159;void init(void){glClearColor(1.0, 1.0, 1.0, 0.0);}void matrix3x3SetIdentity(Matrix3x3matIdent3x3){GLint row, col;for (row = 0; row<3; row++)for (col = 0; col<3; col++)matIdent3x3[row][col] = (row == col);//生成{{1,0,0}{0,1,0}{0,0,1}}}void matrix3x3PreMultiply(Matrix3x3m1, Matrix3x3m2){GLint row, col;Matrix3x3 matTemp;for (row = 0; row<3; row++)for (col = 0; col<3; col++)matTemp[row][col] = m1[row][0] * m2[0][col] + m1[row][1] * m2[1][col] + m1[row][2] * m2[2][col];for (row = 0; row<3; row++)for (col = 0; col<3; col++)m2[row][col] = matTemp[row][col];}void translate2D(GLfloat tx, GLfloat ty)//平移{Matrix3x3 matTransl;matrix3x3SetIdentity(matTransl);matTransl[0][2] = tx;matTransl[1][2] = ty;matrix3x3PreMultiply(matTransl, matComposite);}void rotate2D(wcPt2D pivotPt, GLfloat theta)//旋转{Matrix3x3 matRot;matrix3x3SetIdentity(matRot);matRot[0][0] = cos(theta);matRot[0][1] = -sin(theta);matRot[0][2] = pivotPt.x*(1 - cos(theta)) + pivotPt.y*sin(theta);matRot[1][0] = sin(theta);matRot[1][1] = cos(theta);matRot[31][2] = pivotPt.x*(1 - cos(theta)) - pivotPt.y*sin(theta);matrix3x3PreMultiply(matRot, matComposite);}void scale2D(GLfloat sx, GLfloat sy, wcPt2D fixedPt)//缩放{Matrix3x3 matScale;matrix3x3SetIdentity(matScale);matScale[0][0] = sx;matScale[0][2] = (1 - sx)*fixedPt.x;matScale[1][1] = sy;matScale[1][2] = (1 - sy)*fixedPt.y;matrix3x3PreMultiply(matScale, matComposite);}void transformVerts2D(GLint nVerts, wcPt2D * verts)//组合变化后的矩阵{GLint k;GLfloat temp;for (k = 0; k<nVerts; k++){temp = matComposite[0][0] * verts[k].x + matComposite[0][1] * verts[k].y + matComposite[0][2];verts[k].y = matComposite[1][0] * verts[k].x + matComposite[1][1] *verts[k].y + matComposite[1][2];verts[k].x = temp;}}void triangle(wcPt2D*verts){GLint k;glBegin(GL_TRIANGLES);for (k = 0; k<3; k++)glVertex2f(verts[k].x, verts[k].y);glEnd();}void displayFcn(void){GLint nVerts = 3;wcPt2D verts[3] = { { 50.0, 25.0 }, { 150.0, 25.0 }, { 100.0, 100.0 } };wcPt2D centroidPt;GLint k, xSum = 0, ySum = 0;for (k = 0; k<nVerts; k++){xSum += verts[k].x;ySum += verts[k].y;}centroidPt.x = GLfloat(xSum) / GLfloat(nVerts);centroidPt.y = GLfloat(ySum) / GLfloat(nVerts);wcPt2D pivPt, fixedPt;pivPt = centroidPt;fixedPt = centroidPt;GLfloat tx = 0.0, ty = 100.0;GLfloat sx = 0.5, sy = 0.5;GLdouble theta = pi / 2.0;glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.0, 0.0, 1.0);triangle(verts);//三角形matrix3x3SetIdentity(matComposite);scale2D(sx, sy, fixedPt);//缩小transformVerts2D(nVerts, verts);glColor3f(1.0, 0.0, 0.0);triangle(verts);matrix3x3SetIdentity(matComposite);rotate2D(pivPt, theta);//旋转90transformVerts2D(nVerts, verts);glColor3f(1.0, 0.0, 0.0);triangle(verts);matrix3x3SetIdentity(matComposite);translate2D(tx, ty);//平移transformVerts2D(nVerts, verts);glColor3f(1.0, 0.0, 0.0);实验结果。
计算机图形学实用教程第5章 图形变换与裁剪1
(x w , y w)
yb
yv
Ow Yu
W xl 视图区
W xr
Xw
令பைடு நூலகம்
V yt
(x v , y v)
V yb
有
xv axw c
yv byw d
Ou
V xl
V xr
Xu
窗口与视图区的对应关系
本章内容
5.基本几何变换的齐次坐标表示
平移变换
1 y 1 0 Tx 0 1 Ty 0 0 1
x
比例变换
y 1 x
x
旋转变换
逆时针为正
y 1 x
S x y 1 0 0
0 Sy 0
0 0 1
x
y 1 x
cos sin 0 y 1 sin cos 0 0 1 0
当 S x S y时,变换前的图形与变换后的图形相似 当 S x S y 1时,图形将放大,并远离坐标原点 当 0 S x S y 1 时,图形将缩小,并靠近坐标原点 当 S x S y时,图形将发生畸变
3.旋转变换(rotation) 点P绕原点逆时针转θ度角 (设逆时针旋转方向为正方向)
指相对于原点的比例变换
S x 平行于x轴的方向上的缩放量 S y 平行于y轴的方向上的缩放量
x
y
几何关系
x' x S x y' y S y
y
相对于原点的比例变换
重心
矩阵形式
x
y x
S x y 0
0 Sy
计算机图形学-第5章-几何变换课件
•计算机图形学-第5章-几何变换
5.3.3 其他变换
1.反射变换 (2)关于Y轴对称变换 关于Y轴的对称变换是一种特殊形式的缩放变换,其中Sx=-1,Sy=1, 其变换矩阵为:
简化为:YXs
s a c
X Yw
w
d
b
(1)式
•计算机图形学-第5章-几何变换
5.1 窗口到视区的变换
三、窗口区和视图区的坐标变换
简化为:YXs
s aXw c Yw
d
b
(1)式
1) 当ac时,即x 方向的变化与y方向的变化不同时,视图中的图 形会有伸缩变化,图形变形。
2) 当a=c=1,b=d=0,且窗口与视图区的坐标原点也相同,则在视 图区产生与窗口区相同的图形。
•计算机图形学-第5章-几何变换
5.3.3 其他变换
2.错切变换 (2)沿y方向关于x轴的错切 变换矩阵为:
式中shy可取任意实数,此变换只影响y坐标(x坐标保持不变)。 变换时物体上的各点垂直偏移一段距离,偏移量正比于x值。
•计算机图形学-第5章-几何变换
5.3.3 其他变换
2.错切变换
1 d 0
•计算机图形学-第5章-几何变换
5.3.3 其他变换
2.错切变换 这种变换可使物体产生变形,即物体产生扭转(或称为错切)。常用 的两种错切是沿着x向或沿着y向错切变换。 (1)沿x方向关于y轴的错切 对矩形ABCD沿x轴方向进行错切变换,得到矩形A’B’CD。错切的 角度为,令shx=tan , 假定点(x,y)经错切变换后变为(x’,y’) 则:
图形变换及显示-计算机图形学-课件-北京工业大学-05
30
Interactive Computer Graphics-交互式计算机图形学
错切变换(2)
相对于X轴的错切:b=0
依赖轴
x ' 1 d 0 x ' y y 0 1 0 1 0 0 1 1
反射变换(2)
关于X轴的反射变换:
• a=1,b=d=0,e=-1;
x ' 1 0 0 x ' y 0 1 0 y 1 0 0 1 1
25
Interactive Computer Graphics-交互式计算机图形学
' 使用齐次坐标表示为: R P P ( )
其中:
R( )
cos sin 0
sin cos 0
( x' , y ' )
0 0 1
( x, y )
R 称为旋转变换矩阵
逆变换: R( )
16
Interactive Computer Graphics-交互式计算机图形学
Interactive Computer Graphics-交互式计算机图形学
反射变换(5)
关于x=y轴的反射变换: a=e=0,b=d=1;
x ' 0 1 0 x ' y 1 0 0 y 1 0 0 1 1
反射变换(4)
关于原点的反射变换: a=-1,b=d=0,e=-1;
x ' 1 0 0 x ' y 0 1 0 y 1 0 0 1 1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x
f
yf
1
• 因此变换矩阵:
M T xf yf •T ( ) •T xf yf
22
例3:任意反射轴的反射变换
• 任一图形关于任意反射轴y=a+bx的反射变换 • 解:1. 将坐标原点平移到(0,a)处 1 0 0
T1 0 1 0 0 a 1
(hP1,hP2,hPn,h),其中h称为哑坐标。 1、h可以取不同的值,所以同一点的齐次坐标不 是唯一的。 如普通坐标系下的点(2,3)变换为齐次坐标可以 是(1,1.5,0.5)(4,6,2)(6,9,3)等等。 2、 普通坐标与齐次坐标的关系为“一对多” 由普通坐标h→齐次坐标
3、 当h=1时产生的齐次坐标称为“规格化坐
)
sin
cos
cos
sin
x
sin
y
cos
x *
y * 1 x
y
1
cos sin
sin cos
0 0
x
cos
y
sin
xsin y cos
1
0
0 1
15
二维基本变换-错切变换
x *
y * 1 x
y
• 解:设点P(x,y,1)经第一次平移变换后的坐标为P(x y
1),则
1 0 0
P'x' y' 1 x y 1 0 1 0 x y 1Tt1
Tx1
Ty1
1
• 经第二次平移变换后的坐标为P*(x* y* 1)
P * x *
y * 1 x'
c 窗口可以有多种类型,矩形窗口、圆形窗口、多边形 窗口等等 d 窗口可以嵌套,即在第一层窗口中可再定义第二层窗 口,在第I层窗口中可再定义第I+1层窗口等等。
3
窗口视图变换
1. 屏幕域(DC):设备输出图形的最大区域,是 有限的整数域。如图形显示器分辨率为 1024768→DC[0..1023][0..767]
1
1 b
d 1
0 0
x
by
dx y
1
0 0 1
• 1) 当d=0时, (x* y* 1)=(x+by y 1):图形的y坐标不变;
• 当b>0:图形沿+x方向作错切位移。ABCD→A1B1C1D1
• 当b<0:图形沿-x方向作错切位移。ABCD→ A2B2C2D2
0 0 1 0
0
0 0 1
–对称于XOZ平面
1 0 0 0
[x' y' z' 1] = [x -y z 1]=[x y z 1] 0 -1 0 0
0 0 1 0
0 0 0 1
28
三维变换矩阵-旋转变换
–绕X轴变换
空间上的立体绕X轴旋转时,立体上各点的X坐标 不变,只是Y、Z坐标发生相应的变化。
•
cos sin 0
x2
y2
1 x1
y1 1 sin
cos
0
x1
y1 1T
0
0 1
21
旋转变换
• 将坐标系平移回原来的原点
1 0 0
x * y * 1 x2 y2 1 0 1 0 x2 y2 1T x f y f
0
0 - sin cos 0
0 0
0
1
• 遵循右手法则,即若θ>0,大拇指指向
轴的方向,其它手指指的方向为旋转方 向。
a22 a32 a42
a23 a33 a43
a24
a34 a44
• 平移变换
1 0 0 0
0 1 0 0
0
0
1 0
Tx Ty Tz 1
• 比例变换 Sx 0 0 0
0 Sy 0 0
0 0
0 0
Sz 0
0 1
27
三维变换矩阵-对称变换
标”,因为前n个坐标就是普通坐标系下的n维坐
标。
8
齐次坐标的作用
1. 将各种变换用阶数统一的矩阵来表示。 提供了用矩阵运算把二维、三维甚至高 维空间上的一个点从一个坐标系变换到 另一坐标系的有效方法。
2. 便于表示无穷远点。
例如:(x h, y h, h),令h等于0
3. 变换具有统一表示形式的优点 –便于变换合成 –便于硬件实现
10
二维图形的几何变换
• 从变换功能上可把T2D分为四个子矩阵
a b
d e
:对图形进行缩放、旋
转、对称、错切等变换
。
c f :对图形进行平移变换 。
g h
:对图形做投影变换。
g:在x 1 处产生一个灭点。 g
h:在y 1 处产生一个灭点。 h
i:对整体图形进行伸缩 变换。
X Yw
w
d
b
(1)式
• 1) 当ac时,即x 方向的变化与y方向的
变化不同时,视图中的图形会有伸缩变 化,图形变形。
• 2) 当a=c=1,b=d=0则Xs=Xw,Ys=Yw,图形
完全相同。
7
几何变换
齐次坐标
所谓齐次坐标表示法就是由n+1维向量表示一个
n 维 向 量 。 如 n 维 向 量 (P1,P2, … ,Pn) 表 示 为
y'
1
1 0
0 0 1 0
Tx 2
Ty 2
1
1 0 0 1 0 0
x y 1 0 1 0 0 1 0 x y 1 Tt1Tt2
Tx1
Ty1
1
Tx
2
Ty 2
1
• ∴变换矩阵为Tt=Tt1•Tt2
20
例2:旋转变换
图形变换
图形变换是计算机图形学基础内容之一。
几何变换,投影变换,窗视变换
线性变换,属性不变,拓扑关系不变。
作用: • 把用户坐标系与设备坐标系联系起来; • 可由简单图形生成复杂图形; • 可用二维图形表示三维形体; • 动态显示。
1
二维图形的显示流程图
从应用程序 得到图形的 WC 用户坐标
对窗口 区进行 裁剪
Z (y' z')
Z Z (y' z')
(y,z)
θ
XO
Y
θ (y,z) α
O
Y
x' = x
y' = ρcos(α+θ) = y*cosθ- z*sinθ
z' = ρsin(α+θ) = y*sinθ+z*cosθ
29
三维变换矩阵-旋转变换
• 矩阵表示为:
1 0 0 0
x' y' z' 1 x y z 10 cos sin
Ty
1
• 平移变换只改变图形的位置,不改变图 形的大小和形状
12
二维基本变换-比例变换
x*
y * 1 x
y
1
Sx 0
0 Sy
0 0 Sx x
Sy y 1
0 0 1
–以坐标原点为放缩参照点
– 当Sx=Sy=1时:恒等比例变换 – 当Sx=Sy>1时:沿x,y方向等比例放大。 – 当Sx=Sy<1时:沿x,y方向等比例缩小 –当SxSy时:沿x,y方向作非均匀的比例变换,
图形变形。
13
二维基本变换-对称变换
• 当Sx=-1, Sy=1时,(x* y* 1)=(-x y 1):与y轴对
称的反射变换。
• 当Sx=1, Sy=-1时,(x* y* 1)=( x -y 1):与x轴对
称的反射变换。
• 当Sx=-1, Sy=-1时,(x* y* 1)=(-x -y 1):与原
方向作错切位移。 • ∴错切变换引起图形角度关系的改变,
甚至导致图形发生变形。
18
复合变换
• 复合变换又称级联变换,指对图形做一 次以上的几何变换。
• 注意:任何一个线性变换都可以分解为 上述几类变换。
19
例1:复合平移
• 求点P(x,y)经第一次平移变换(Tx1,Ty1),第二次平移 变换(Tx2,Ty2)后的坐标P*(x*, y*)
9
二维图形的几何变换
• 设二维图形变换前坐标为(x,y,1),变换后为
(x*,y*,1)
a d g
•
1.
二维变换矩阵
T2 D
b
e
h
c f i
• 注意:T2D可看作三个行向量,其中 • [1 0 0]:表示x 轴上的无穷远点
• [0 1 0]:表示y 轴上的无穷远点
• [0 0 1]:表示原点
R
c os sin
sin c os
0 0
0
0 1
24
任意的反射轴的反射变换
• 5.恢复反射轴的原始位置 1 0 0
T3 0 1 0
• 因此 T T1R T2R T3
0 a 1
•
25
三维几何变换
• 三维其次坐标
2. 视图区:任何小于或等于屏幕域的区域 a 视图区用设备坐标定义在屏幕域中 b 窗口区显示在视图区,需做窗口区到视图区的
坐标转换。 c 视图区可以有多种类型:圆形、矩形、多边形