图形变换与齐次坐标
08 图形变换

=
x1’ y1’ 1 x2’ y2’ 1 . ..
. ..
Tx Ty 1
. ..
. ..
. .. xn yn 1
. .. xn + Tx yn + Ty 1
. .. xn’ yn ’ 1
如果点P(x,y)经T1变换后平移了(Tx1,Ty1),然后再经T2
变换后又平移了(Tx2,Ty2),那么将产生什么结果呢?从
xi ’= Sx . xi
yi ’= Sy . yi
(式8-2-3)
当Sx = Sy <1时,图形缩小;
当Sx = Sy =1时,图形不变;
当Sx = Sy >1时,图形放大;
当这S种x情≠况S。y 时, 图形发生畸变;不考虑
如图8-2-2所示。注意图形放大或缩小时, 图形位置都发生了变化。
2.比例变换
在 示点变P换(x矩,y阵)沿TX中和,Y取方a向=S相x,对d原=S点y,的它比们例分变别换表系 数,比例变换矩阵T为:
T=
Sx 0 0 0 Sy 0 001
(式8-2-6)
则比例变换可表示为:
P’=P•T =[x y 1] Sx 0 0 0 Sy 0 = [x Sx y Sy 1 ] 001
y
Ty
Tx x
图8-2-1 平移变换
y
Sx = Sy >1 Sx = Sy =1 Sx = Sy <1
x
图8-2-2 比例变换
3)对于旋转变换,先讨论平面上点绕坐标原 点的旋转变换。
一个平面图形绕坐标原点逆时针旋转θ角
度,图形的形状保持不变,但图形各顶点的位
置坐标相应地发生了改变。如图8-2-3所示,可
计算机图形学PPT神奇的齐次坐标与二维图形变换

例如:关于X轴对称
P(x,y)
P’(x’,y’)
x’=x
x
y’=-y
2 几何变换
以二维为例:
错切:也称为剪切、错位变换,用于产生弹性物体的变形处理。
y
y
y
(a)原图
x
x
x
(b)沿x方向错切
(c)沿y方向错切
2 几何变换
以二维为例: 错切:也称为剪切、错位变换,用于产生弹性物体的变形处理。
2 几何变换
以二维为例:
平移:指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位 过程,是 一种不产生变形而移动物体的刚体变换。
y
P’
PT
Ty
Tx
0
x
P(x,y)
P’(x’,y’)
x’=x+Tx y’=y+Ty
Tx :x方向的平移矢量 Ty :y方向的平移矢量
2 几何变换
以二维为例:
比例:对p点相对于坐标原点沿x方向放缩Sx倍,沿y方向放缩Sy倍。其中Sx 和Sy称 为比例系数。
旋转
x’=xcosθ -ysinθ y’=xsinθ +ycosθ
cos sin 0
sin cos 0
0
0 1
3 齐次坐标的引入
T1
T3
a b p
x' y' 1 x y 1T2D x y 1c d q
l m s
T2
T4
其中:
T1是对图形进行比例、旋转、对称、 错切等变换;
T2是对图形进行平移变换; T3是对图形作投影变换; T4则可以对图形作整体比例变换。
旋转
x’=xcosθ -ysinθ y’=xsinθ +ycosθ
计算机图形学第五章图形变换

第五章图形变换重 点:掌握二维几何变换、二维观察变换、三维几何变换以及三维观察变换。
难 点:理解常用的平移、比例、旋转变换,特别是复合变换。
课时安排:授课4学时。
图形变换包括二维几何变换, 二维观察变换,三维几何变换和三维观察变换。
为了能使各种几何变换(平移、旋转、比例等)以相同的矩阵形式表示,从而统一使用矩阵乘法运算来实现变 换的组合,现都采用齐次坐标系来表示各种变换。
有齐次坐标系齐次坐标系:n 维空间中的物体可用 n+1维齐次坐标空间来表示。
例如二维空间直线 ax+by+c=O ,在齐次空间成为 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。
采用齐次坐标系可以将平移、比例、旋转这三种基本变换都以相同的矩阵形式来表示,并统齐次坐标系在三维透视变换中有更重要的作用, 示形它使非线形变换也能采用线形变换的矩阵表式。
图形变换平移变换图示如图所示,它使图形移动位置。
新图 p'的每一图元点是原图形 p 中每个图元点在向分别移动Tx 和Ty 产生,所以对应点之间的坐标值满足关系式x'=x+Tx y'=y+Ty可利用矩阵形式表示成:[x' y' ] = : x y ] + : Tx Ty ]简记为:P'= P+T , T= : Tx Ty ]是平移变换矩阵(行向量)二堆几何变换1 1二维观察变換三维几诃变换平移变换 比例变换 陡转变换 对称变换 错切变换 仿肘变换 复合变换平移变换 比例变换 旋转变换 绕空间任意轴離转 对称变换 蜡切变换三维观察变5.1二维几何变换二维几何变换就是在平面上对二维点的坐标进行变换,从而形成新的坐标。
计算机图形学之图形变换

4 T
3
2 p
1
0
012 34 567 8
线段和多边形的平移可以通过顶点的
平移来实现。同样线段和多边形的其它几 何变换也可以通过对顶点的几何变换来实 现。
2. 旋转变换(Rotation) 二维旋转有两个参数:
旋转中心: 旋转角:
?
6 P’
5
4
3
P
2
1
0
012 34 567 8
设OP与x轴的夹角为 则:
由于采用齐次坐标矩阵表示几何变换, 多个变换的序列相应地可以用矩阵链乘来表 示。
需要注意:先作用的变换其矩阵在右边, 后作用的变换其矩阵在左边。
变换函数
平移变换 void glTanslate{fd}(TYPE x, TYPE y, TYPE z);
旋转变换 void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z); 绕矢量v=(x,y,z)T逆时针方向旋转angle指定的角度。 旋转角度的范围是0~360度。当angle=0时, glRotate()不起作用。
二维旋转有两个参数: 旋转中心: 旋转角:
上述变换可以分解为三个基本变换:
•平移:
•旋转:
•平移: 回原位。
使旋转中心移到坐标原点; 使旋转中心再移
二维旋转有两个参数: 旋转中心: 旋转角:
因此上述变换可以写成矩阵乘积形式:
4. 5 基本三维几何变换(Basic three-dimensional geometric transformation)
1. 矩阵表示(Matrix representation) 前面三种变换都可以表示为如下的矩
阵形式
齐次坐标表示法在图形变换中的作用

齐次坐标表示法在图形变换中的作用
齐次坐标表示法(HomogeneousCoordinatesRepresentation,简称HCR)是将三维坐标投影到平面的一种方法,它使用数学方法将三维坐标表示成(x,y,z)变换成(x/z,y/z,1)的形式,也可以称为齐次坐标。
齐次坐标表示法被广泛应用于计算机图形学中,用于实现图形变换,如旋转、平移、缩放等。
齐次坐标表示法通过将三维坐标映射到一个四元素向量,使得变换变得容易。
例如,使用位置矢量(x,y,z)表示空间中的点时,
可以使用齐次坐标表示法将它表示为(x,y,z,1)的形式。
使用这种形式可以用一个4×4的矩阵将这个点移动到空间中的另一个位置,而不需要重新计算其坐标(也就是说,只需要替换矩阵的某些元素即可)。
在图形变换中,旋转和平移是最基本的变换,而使用齐次坐标表示法可以简单、有效的实现它们。
首先,在没有使用齐次坐标表示法前,要实现旋转,就需要按照旋转轴和角度来计算出旋转后点的新坐标,而使用齐次坐标表示法则只需要通过一个4x4的旋转矩阵来计算出旋转后点的新坐标,这种方式实现旋转更加简单、方便。
同样,在实现平移时,也可以使用齐次坐标表示法来简化计算,即只需要改变矩阵的某些元素来实现平移,而无需重新计算出点的新坐标。
此外,使用齐次坐标表示法还可以实现缩放,即通过改变矩阵中某些元素来实现缩放,从而实现图形大小的变换。
总之,齐次坐标表示法是计算机图形学中的一种非常有用的方法,
它使得图形变换变得简单、快捷,使得计算机图形学取得了很大的进步,受到了广泛的应用。
计算机图形学_ 二维图形变换_53 二维图形变换原理及齐次坐标_

为什么要采用齐次坐标?
在笛卡儿坐标系内,向量(x,y)是位于z=0的平面上的点 ;而向量(x,y,1)是位于z=1的等高平面上的点
对于图形来说,没有实质性的差别,但是却给后面矩阵运 算提供了可行性和方便性
假如变换前的点坐标为(x,y),变换后的点坐标为(x*,y* ),这个变换过程可以写成如下矩阵形式:
x*, y*x,
x* a1x b 1 y c1
y•M
x*, y*x
a1
y
1
b 1
c1
a2 b2 c2
上两式是完全等价的。对于向量(x,y,1),可以在几何意义 上理解为是在第三维为常数的平面上的一个二维向量。
这种用三维向量表示二维向量,或者一般而言,用一个n+1维 的向量表示一个n维向量的方法称为齐次坐标表示法
n维向量的变换是在n+1维的空间进行的,变换后的n维结果 是被反投回到感兴趣的特定的维空间内而得到的。
如n维向量(p1,p2,...,pn)表示为(hp1,hp2,...,hpn,h), 其中h称为哑坐标。 普通坐标与齐次坐标的关系为“一对多”:
变换图形就是要变换图形的几何关系,即改变顶点的坐 标;同时,保持图形的原拓扑关系不变
仿射变换(Affine Transformation或 Affine Map)是一 种二维坐标到二维坐标之间的线性变换 (1)“平直性”。即:直线经过变换之后依然是直线
(2)“平行性”。即:平行线依然是平行线,且直线上 点的位置顺序不变)
采用了齐次坐标表示法,就可以统一地把二维线形变换表示 如下式所示的规格化形式:
三维齐次坐标变换
三维齐次坐标变换三维齐次坐标变换在计算机图形学和计算机视觉领域中具有重要的应用。
它是一种表示和变换三维空间中物体位置和姿态的方法。
本文将简要介绍三维齐次坐标变换的概念、原理和应用,以及其在计算机图形学和计算机视觉中的具体应用案例。
一、概述三维齐次坐标变换是一种将三维物体在三维空间中的位置和姿态进行表示和变换的方法。
它通过引入一个额外的尺度变量来将三维几何运算转换为矩阵乘法运算,从而简化了三维计算的表示和运算。
三维齐次坐标变换以齐次坐标的形式表示三维点和变换矩阵,通过矩阵乘法来进行坐标变换和几何运算。
二、三维齐次坐标表示在三维齐次坐标中,一个三维点可以表示为一个四维向量,即[x, y, z, w],其中w为尺度变量。
三维点的齐次坐标表示可以通过除以w得到其三维坐标表示[x/w, y/w, z/w]。
同样,一个三维向量可以表示为一个四维向量,其中w为0。
三、齐次坐标变换矩阵齐次坐标变换可以表示为一个4x4的变换矩阵,其中包括平移、旋转、缩放等变换操作。
变换矩阵可以通过组合多个变换操作得到,从而实现复杂的几何变换。
常用的齐次坐标变换包括平移变换、缩放变换、旋转变换等。
四、三维齐次坐标变换的应用三维齐次坐标变换在计算机图形学和计算机视觉中有广泛的应用。
其中一个主要应用是计算机图形学中的三维物体变换和渲染。
通过齐次坐标变换,可以对三维物体进行平移、旋转、缩放等操作,从而实现物体在三维空间中的位置和姿态的变换。
另一个主要应用是计算机视觉中的三维重建和相机校准。
通过齐次坐标变换,可以将多个相机坐标系对齐,实现三维重建和相机参数校准。
五、应用案例1. 计算机图形学中的三维物体变换:在三维游戏开发中,可以通过齐次坐标变换来实现角色的平移、旋转、缩放等操作,从而实现角色在游戏场景中的自由移动和姿态变化。
2. 计算机视觉中的三维重建:在三维重建中,通过齐次坐标变换可以将多个相机拍摄的图像对齐,实现对场景中物体的三维重建和重建精度的提升。
齐次坐标是什么?齐次坐标的使用
齐次坐标是什么?齐次坐标的使⽤矩阵是什么我就不必介绍了,如果⼀个n*m(n⾏m列)的矩阵和a*b(a⾏b列)矩阵要相乘,那么必须满⾜m==a这个条件。
相加的话需要满⾜n==a && m==b条件。
这⾥我们先介绍⼀些关键词:1、线性相关:β = m*α1 + n*α2数学称β可以由向量组{α1,α2}线性表⽰,同时称β,α1,α2为线性相关。
ps:反过来就是说假如β不能由{α1,α2}线性表⽰,则称β,α1,α2为线性⽆关。
2、向量空间和⼦空间在OA,OB,OZ张成的⽴体空间中任意向量β = m*OA + n*OB + k*OZ(m,n,k>0),β就是{OA,OB,OZ}的线性表⽰,当然假如m,n,k为任意实数,就是”张成“了xyz的全部空间了。
这⾥就有个名词蹦出来了,就是⼦空间,假如我们把上⾯m,n,k为任意实数构成的空间叫做S,那么m,n,k>0构成的空间S1就是S的⼀个⼦空间。
⼀个向量组{α1,α2,α3....αn},这个向量组的所有线性组合⽣成⼀个向量合集:{x1*α1 + x2*α2 + x3*α3 ...+xn*αn }且x1,x2...xn属于R这个向量集合称为Span{α1,α2,α3....αn},称为向量组{α1,α2,α3....αn}张成的向量空间。
3、向量空间的基对于向量空间S中的⼀个有序向量组{α1,α2,α3....αn},假如α1,α2,α3....αn线性⽆关,且任意向量β = x1*α1 + x2*α2 + x3*α3 ...+xn*αn那么我们称向量组{α1,α2,α3....αn}为向量空间S的⼀个基,向量组的向量个数称为S的维数,有序实数组{x1,x2,x3...xn}为向量β在基{α1,α2,α3....αn}上的坐标。
4、仿射坐标系在空间中选取⼀点做为O原点,从O为起点做任意三个不共⾯的向量α1,α2,α3,这种⽅式建⽴的坐标系叫做仿射坐标系,写成:{O;α1,α2,α3},那么任意⼀个向量α可以⽤实数组(x,y,z)来表⽰,既:α = x*α1+y*α2+z*α3,这⾥我们称(x,y,z)为向量α的坐标。
-图形学实验报告-二维基本变换
一、 实验目的和要求利用VC6.0编写二维基本几何变换算法的实现。
实现平移,比例,旋转等变换。
二、 算法原理介绍齐次坐标表示法就是用N+1维向量来表示一个N 维向量。
在齐次坐标系统中,点(X,Y)用(X,Y ,H)来表达,其中H 为非零的一个任意数。
点(X,Y)的标准齐次坐标表达为(X/H,Y/H,1),由于H 是一个任意非零常量,为了简便起见,我们通常取H=1。
齐次坐标系统中的点(X,Y ,1)包含有笛卡尔坐标上的点(X,Y)。
平移变换:比例变换:旋转变换:对称变换:关于x 轴对称:关于y 轴对称:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1000000y x SS ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-100010001关于原点对称:关于y=x 对称:关于y=-x 对称:错切变换:当b=0时: (x` y` 1)=(x+cy y 1)。
图形的y 坐标不变。
当c>0:图形沿+x 方向作错切位移。
ABCD →A1B1C1D1当c<0:图形沿-x 方向作错切位移。
ABCD → A2B2C2D2当c=0时, (x` y` 1)=(x bx+y 1):图形的x 坐标不变。
当b>0:图形沿+y 方向作错切位移。
ABCD → A1B1C1D1当b<0:图形沿-y 方向作错切位移。
ABCD → A2B2C2D2当b 不等于0且c 不等于0时,(x` y` 1)=(x+cy bx+y 1) :图形沿x,y 两个方向作错切位移。
∴错切变换引起图形角度关系的改变,甚至导致图形发生变形。
三、 程序核心源代码void CChangeView::Tmove(double Tx,double Ty) //平移变换矩阵{ ClearMatrix(TM);RedrawWindow();TM[0][0]=1;TM[1][1]=1;TM[2][0]=Tx;TM[2][1]=Ty;TM[2][2]=1;⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-100010001⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--100010001⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100001010⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--100001010⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1000101c bCalculate(P,TM);AfxGetMainWnd()->SetWindowText("二维几何变换-平移变换");Draw(P,p3);}void CChangeView::Tscale(double Sx,double Sy) //比例变换矩阵{ ClearMatrix(TS);RedrawWindow();TS[0][0]=Sx;TS[1][1]=Sy;TS[2][2]=1;Calculate(P,TS);AfxGetMainWnd()->SetWindowText("二维几何变换-比例变换");Draw(P,p3);}void CChangeView::Trotate(double thta)//旋转变换矩阵{ ClearMatrix(TR);RedrawWindow();TR[0][0]=cos(thta*PI/180);TR[0][1]=sin(thta*PI/180);TR[1][0]=-sin(thta*PI/180);TR[1][1]=cos(thta*PI/180);TR[2][2]=1;Calculate(P,TR);AfxGetMainWnd()->SetWindowText("二维几何变换-旋转变换");Draw(P,p3);}void CChangeView::Treflect(double Fx,double Fy) //反射变换矩阵{ ClearMatrix(TF);RedrawWindow();TF[0][0]=Fx;TF[1][1]=Fy;TF[2][2]=1;Calculate(P,TF);AfxGetMainWnd()->SetWindowText("二维几何变换-反射变换");Draw(P,p3);}void CChangeView::Treform(double b,double c) //错切变换矩阵{ ClearMatrix(TC);RedrawWindow();TC[0][0]=1; TC[0][1]=b; TC[1][0]=c; TC[1][1]=1; TC[2][2]=1;Calculate(P,TC);AfxGetMainWnd()->SetWindowText("二维几何变换-错切变换");Draw(P,p3);}void CChangeView::OnMENUup(){// TODO: Add your command handler code hereTmove(0,10);}void CChangeView::OnMENUdown(){// TODO: Add your command handler code hereTmove(0,-10);}void CChangeView::OnMENUleft(){// TODO: Add your command handler code hereTmove(-10,0);}void CChangeView::OnMENUright(){// TODO: Add your command handler code hereTmove(10,0);}void CChangeView::OnMENUClockwise() //顺时针旋转{// TODO: Add your command handler code hereTrotate(-30);}void CChangeView::OnMENUAnticlockwise() //逆时针旋转{// TODO: Add your command handler code hereTrotate(30);}void CChangeView::OnMENUIncrease(){// TODO: Add your command handler code hereTscale(2,2);}void CChangeView::OnMENUDecrease(){// TODO: Add your command handler code here Tscale(0.5,0.5);}void CChangeView::OnMENUY(){// TODO: Add your command handler code here Treflect(-1,1);}void CChangeView::OnMENUO(){// TODO: Add your command handler code here Treflect(-1,-1);}void CChangeView::OnMENUX(){// TODO: Add your command handler code hereTreflect(1,-1);}void CChangeView::OnMENUXdirectionplus(){// TODO: Add your command handler code here Treform(0,1);}void CChangeView::OnOnMENUXdirectionneg() {// TODO: Add your command handler code here Treform(0,-1);}void CChangeView::OnMENUITYdirectionplus(){// TODO: Add your command handler code here Treform(1,0);}void CChangeView::OnMENUYdirectionneg(){// TODO: Add your command handler code here Treform(-1,0);}void CChangeView::OnMENUReset(){// TODO: Add your command handler code here if(p3==4){ KeepMatrix(OSquare,P); }if(p3==3){ KeepMatrix(OTriangle,P); }if(p3==2){ KeepMatrix(OLine,P); }Draw(P,p3);}void CChangeView::Onre(){// TODO: Add your command handler code here Treflect(-1,-1);}四、实验结果抓图原图:平移变换后:对称变换后:(关于X轴对称)旋转变换后:(顺时针旋转)比例变换后:缩小放大错切变换后:Y正向五、参考文献[1]赵建忠,段康廉.三维建模在虚拟矿山系统中的应用[J].中国科技论文.[2]许惠平,陈越,陈华根,廖晓留,王智博.青藏高原亚东-格尔木地学断面域岩石圈结构演化虚拟现实表达[J].中国科技论文.[3]罗斌,魏世民,黄昔光,张艳.基于OpenGL的3P-6SS并联机构的仿真与轨迹规划研究[J].;国家自然科学基金资助项目.。
齐次坐标
所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。
例如,二维点(x,y)的齐次坐标表示为(hx,hy,h)。
由此可以看出,一个向量的齐次表示是不唯一的,齐次坐标的h取不同的值都表示的是同一个点,比如齐次坐标(8,4,2)、(4,2,1)表示的都是二维点(4,2)。
给出点的齐次表达式[X Y H],就可求得其二维笛卡尔坐标,即
[X Y H]→
= [x y 1],这个过程称为正常化处理。
在几何意义上,相当于把发生在三维空间的变换限制在H=1的平面内。
那么引进齐次坐标有什么必要,它有什么优点呢?
许多图形应用涉及到几何变换,主要包括平移、旋转、缩放。
以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来可以表示为p' = p *m1+ m2(m1旋转缩放矩阵,m2为平移矩阵,p为原向量,p'为变换后的向量)。
引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为p' = p*M的形式。
即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。
其次,它可以表示无穷远的点。
n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一个无穷远点。
对于齐次坐标(a,b,h),保持a,b不变,|V|=(x1*x1,y1*y1,z1*z1)^1/2的过程就表示了标准坐标系中的一个点沿直线ax+by=0 逐渐走向无穷远处的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形变换是计算机图形学基础内容之一 ? 几何变换,投影变换,视窗变换 ? 线性变换,属性不变,拓扑关系不变。 ? 作用:
? 把用户坐标系与设备坐标系联系起来; ? 可由简单图形生成复杂图形; ? 可用二维图形表示三维形体; ? 动态显示。
图形的几何变换
? 几何变换:图形的几何信息经过几何变 换后产生新的图形。
?x' y' 1 ?? ?x y 1??? 0
1
0
? ?
?? 0 0 1 ??
? 关于坐标原点的对称变换
?? 1 0 0 ?
?x' y ' 1?? ?x y 1??? 0 -1
0
? ?
?? 0 0 1??
5. 旋转变换 其矩阵表示为:
(x',y') ρ θ (x,y)
α
?cos? sin? 0?
?x'
y'
1?? [ x
y
1]??-sin?
cos?
0
? ?
?? 0 0 ??1
6. 平移变换
Y
? x'? x ? m
? ?
y
'
?
y?
n
[ x' y' 1] ? [x ? m y ? n 1]
?1 0 0 ?
? ?x y 1???0 1
0
? ?
??m n 1 ??
m P'(x'y') n
P(x,y) X
二维坐标与齐次坐标是一对多的关系。通 常都采用规格化的齐次坐标,即取 H=1。 (x,y) 的规格化齐次坐标 为 (x,y,1)。
齐次坐标的几何意义: 可理解为在三维空 间上第三维为常数的一平面上的二维向量。
齐次坐标的作用:
1. 将各种变换用阶数统一的矩阵来表示。 提供了 用矩阵运算实现图形变换,或者把二维、三维 甚至高维空间上的一个点从一个坐标系变换到 另一坐标系的有效方法 。
复合变换及变换的模式
? 变换的结果与变换的顺序有关(矩阵乘 法不可交换)
Translate2D(1,0); Rotate2D(45);
Rotate2D(45);
Translate2D(1,0);
House();
House();
特别注意
? 求变换矩阵是要明确变换模型
? 左乘 ? 右乘
? 采用变换矩阵左乘的图形系统一般用堆栈实 现
? 先调用的变换后执行,后调用的变换先执行
三维几何变换
1. 三维变换矩阵 统一的二维变换矩阵:
?a b p ?
4. 对称变换
? 关于X轴的对称变换 P(x,y) 对称点为 P'(x, -y)
? 关于Y轴的对称变换 P(x,y)对称点为P'(-x, y)
? 关于坐标原点的对称变换 P(x,y) 关于原点的对称点为 P'(-x,-y)
5 错切变换 (SHEAR)
(1) 沿x方向产生错切 x' = x + y*tag(θ) y' = y
y
y
P′ (x ′ ,y′ )
θ
P(x,y)
x
y′
P(x,y) P′(x′,换
Y
P'(x',y')
x' = x*sx
y'= y*s y
Sx = Sy: 均匀缩放。 Sx = Sy > 1,放大 Sx = Sy < 1,缩小 Sx 不等于Sy时,沿坐标轴方向伸展和压缩
P(x,y) X
一个点绕原点的旋转,逆时针方向为正。
? x ? ? cos ?
? ?
y
?
?
sin
?
(x',y') ρ θ (x,y)
α
?x' ? ? cos(? ?? ) ? ? cos? cos? ? ? sin? sin? ? xcos? ? ysin? ??y' ? ? sin(? ?? ) ? ? sin? cos? ? ? cos? sin? ? xsin? ? ycos?
2. 便于表示无穷远点。
例如:(x*H, y*H, H) ,令H等于0,
齐次坐标与二维变换的矩阵表示
多个变换作用于多个目标 变换合成
变换合成的问题 引入齐次坐标 变换的表示法统一
1. 恒等变换 2. 比例变换
?1 0 0 ?
?x' y ' 1?? ?x y 1???0 1
0
? ?
??0 0 1 ??
? 变换过程如下:
(x', y') θ (x,y)
7. 绕任一点的旋转变换 假定该任一点为 P(m,n), 旋转
角为θ
(m,n)
1 (x1,y1)
2
(x2,y2) θ
3
(x',y') mn
[ x 1 y1 1] [ x 2 y2 1] [x' y' 1]
?1 0 0 ?
T1
? ?x y 1 ??? 0 1 0
? x ' ? ax
? ?
y'?
by
?a 0 0 ?
[ x ' y ' 1] ? [x y 1]
? ?
0
b0
? ?
?? 0 0 1 ??
3. 对称变换
? 关于X轴的对称变换
?1 0 0 ?
?x ' y ' 1?? ?x y
1???0 -1
0
? ?
??0 0 1 ??
关于Y轴的对称变换
?? 1 0 0 ?
? ?
?? -m -n 1
??
? cos ? sin ? 0 ?
? [x1 y1 1]
? ?
-sin
?
cos
?
0
? ?
T2
?? 0 0 1
??
?1 0 0 ?
? [x2 y2 1]
? ?
0
1
0
? ?
T3
?? m n 1 ??
[ x ' y' 1] ? [x y 1]T 1 T 2 T 3
T =T1 T2 T3 称为矩阵级联,也称复合变换。
(2) 沿y方向产生错切 x' = x y' = y +x * tag(θ)
(x,y) Y
θ
(x',y')
X
(x',y') Y
θ (x,y)
X
二维图形变换的矩阵表示
1. 齐次坐标
齐次坐标就是一个 n维矢量的(n+1)维矢量 表示。
例如:二维坐标点 P(x,y)的齐次坐标为: (H*x, H*y, H) 。
? 几何变换的两种形式:
1.图形不变,坐标系改变; 2.图形改变,坐标系不变。
二维图形变换
y
y
? 1. 平移变换
x
x
? 从点 P[x,y]
平移到点
P'[x ',y']
Y
m P'(x'y')
n
? x' = x + m ? y' = y + n
y
P′(x′,y′ )
P(x,y)
n
P(x,y) X
m
x
2 旋转变换
复合变换及变换的模式
? 问题:如何实现复杂变换? ? 关于任意参照点的旋转变换
R(xr , yr ;? ) ? T (? xr , ? yr ) ? R(? ) ? T (xr , yr )
复合变换及变换的模式
S(xr , yr ; sx, sy ) ? T(? xr , ? yr ) ? S(sx, sy) ? T ( xr , yr )