二维图形基本变换规则及应用
- 格式:doc
- 大小:354.00 KB
- 文档页数:15
实验报告学院:计算机学号:姓名:实验四 二维图形的基本几何变换一、实验目的1.掌握二维图形基本的几何变换原理及变换矩阵; 2.掌握矩阵运算的程序设计。
二、实验内容实现二维图形的基本变换,包括平移、旋转、比例、对称变换。
三、实验环境硬件平台:PC运行环境: Windows 平台,Visual C++四、算法描述二维图形齐次坐标变换矩阵一般表达式 T = 这 3×3 矩阵中各元素功能一共可分成四块,即a 、b 、c 、d 四项用于图形的比例、对称、错切、旋转等基本变换; k 、m 用于图形的平移变换;p 、q 用于图形的透视变换; s 用于图形的全比例变换。
平移变换 旋转变化放缩变换五、实验过程5.1打开Visualc++6.0程序5.2新建一个C++项目⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡s m kq dc p b a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡''1),(110010011y x t t T y x t t y x y x y x 记为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡''1)(11000cos sin 0sin cos 1y x R y x y x θθθθθ记为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡''1),(11000001y x s s S y x s s y x y x y x记为5.3单击完成,双击源文件里的二维图形几何变换View.cpp,出现下图5.5找到其中的OnDraw函数,并将其改成如下,使其实现了一条直线的平移。
void C二维图形几何变换View::OnDraw(CDC* pDC){C二维图形几何变换Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码int a[3][3];int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=0;for(i=0;i<3;i++)a[i][i]=1;int x0=80,x1=350,y0=120,y1=120;pDC->MoveTo(x1,y1);E:\c++6.0安装\MSDev98\MyProjects\pDC->LineTo(x0,y0);a[2][0]=80;//使直线在行方向上平移了80个单位a[2][1]=50;//使直线在列方向上平移了50个单位x0=x0*a[0][0]+y0*a[1][0]+a[2][0];y0=x0*a[0][1]+y0*a[1][1]+a[2][1];x1=x1*a[0][0]+y1*a[1][0]+a[2][0];y1=x1*a[0][1]+y1*a[1][1]+a[2][1];pDC->MoveTo(x1,y1);pDC->LineTo(x0,y0);}5.6单击运行程序并有如下结果5.7找到其中的OnDraw函数,并将其改成如下,使其实现了一条直线的平移和缩放。
第五章图形变换重 点:掌握二维几何变换、二维观察变换、三维几何变换以及三维观察变换。
难 点:理解常用的平移、比例、旋转变换,特别是复合变换。
课时安排:授课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二维几何变换二维几何变换就是在平面上对二维点的坐标进行变换,从而形成新的坐标。
几何变换与变换矩阵几何变换是计算机图形学中常用的一种技术,用于对二维或三维图形进行平移、旋转、缩放和剪切等操作。
这些操作可以通过变换矩阵来描述和计算。
本文将介绍几何变换的基本概念及其与变换矩阵的关系。
一、几何变换的基本概念1. 平移变换平移变换是将图形沿着指定的方向移动一定的距离。
在二维空间中,平移变换可以通过在原始坐标上加上一个向量来实现。
例如,将原始坐标(x, y)进行平移变换得到新的坐标(x', y'),可以表示为:x' = x + dxy' = y + dy其中,dx和dy分别为在x和y方向上的平移距离。
2. 旋转变换旋转变换是将图形绕指定的点或轴旋转一定的角度。
在二维空间中,旋转变换可以通过将原始坐标(x, y)绕着指定点(xc, yc)逆时针旋转θ角度得到新的坐标(x', y'),可以表示为:x' = (x - xc) * cosθ - (y - yc) * sinθ + xcy' = (x - xc) * sinθ + (y - yc) * cosθ + yc其中,(xc, yc)为旋转中心点,θ为旋转角度。
3. 缩放变换缩放变换是将图形沿着指定的方向进行放大或缩小。
在二维空间中,缩放变换可以通过将原始坐标(x, y)分别乘以指定的缩放因子sx和sy得到新的坐标(x', y'),可以表示为:x' = x * sxy' = y * sy其中,sx和sy分别为在x和y方向上的缩放因子。
4. 剪切变换剪切变换是将图形沿着指定的方向进行截取或拉伸。
在二维空间中,剪切变换可以通过将原始坐标(x, y)进行线性变换得到新的坐标(x', y'),可以表示为:x' = x + kx * yy' = y + ky * x其中,kx和ky分别为在x和y方向上的剪切因子。
二、变换矩阵的基本概念与计算方法变换矩阵是一种矩阵表示方法,用于描述几何变换的转换规则。
⼆维图形⼏何变换⼀、基本变换1. 平移定义:将物体沿直线路径从⼀个坐标位置移到另⼀个坐标位置的重定位。
不产⽣变形⽽移动物体的刚体变换。
原始坐标位置:(x ,y ),平移距离t x 、t y ,新位置(x ′,y ′),则x ′=x +t x ,y ′=y +t y 表⽰为矩阵形式,令:→P =x y→P ′=x ′y ′→T =t x t y⼆位平移⽅程:→P ′=→P +→T2. 旋转当参考点为(0,0)定义:以某个参考点为圆⼼,将对象上的各点(x ,y )围绕圆⼼转动⼀个逆时针⾓度θ,变成新的坐标(x ′,y ′)的变换。
x ′=rcos (φ+θ)=rcos φcos θ−rsin φsin θy ′=rsin (φ+θ)=rsin φcos θ+rcos φsin θ∵x =rcos φ,y =rsin φ∴x ′=xcos θ−ysin θy ′=xsin θ+ycos θ令:→R =cos θ−sin θ−sin θcos θ写成矩阵形式:→P ′=→R ⋅→P绕任意指定的旋转位置(x r ,y r )旋转的变换⽅程1. 将坐标系原点平移到(x r ,y r )2. 在新的坐标系下做旋转变换3. 将坐标原点平移回原坐标系x ′=x r +(x −x r )cos θ−(y −y r )sin θy ′=y r +(x −x r )sin θ+(y −y r )cos θ3. 变化(缩放)Scaling定义:使对象按⽐例因⼦Sx 和Sy 放⼤或缩⼩的变换。
x ′=x ⋅S xy ′=y ⋅S y令→S =S x 00S y矩阵形式:→P ′=→S ⋅→PS x 、S y 均⼩于1,缩⼩物体尺⼨,S x 、S y 均⼤于1,放⼤物体。
S x =S y ,则保持物体相对⽐例缩放⼀致。
特殊情况当Sy =−1、Sx =1,按x 轴反射当Sy =1、Sx =−1,按y 轴反射()()()()()当Sy =−1、Sx =−1,按原点(0,0)反射⼆、变换矩阵每个基本变换均可表⽰为普通矩阵形式:→P ′=→M 1→P +→M 2平移将2×2矩阵扩充为3×3矩阵,将⼆维⼏何变换的乘法和平移项组合成单⼀矩阵表⽰平移。
二维图形基本变换规则及应用(07级信息与计算科学傅强070350221)摘要利用计算机绘制的图形与我们日常见到的图片、照片是有相似之处。
除图片、照片等图形外,自然界中还存在丰富多彩的有形物体。
一般,根据图形所在空间的不同,可将图形分为:三维图形和二维图形。
图片、照片属二维图形,自然界中形形色色的物体属于三维图形。
在计算机绘图的过程中,二维图形的绘制是绘制三维图形的基础,研究计算机图形的生成必须从研究二维图形开始。
计算机绘制图形时,无论图形多么复杂,都是利用一些相应图形基元经过图形变换组成的。
在计算机绘图中,经常用到图形变换,图形变换是指图形信息经过几何变换后产生新的图形。
基本的几何变换研究物体坐标在直角坐标系内的平移、旋转和变比等规则。
本文主要介绍二维图形的一些基本变换规则及其应用关键词:直角坐标系内;平移;旋转;应用ABSTRACTUsing the computer graphics and see our daily drawings, photographs are similarities. Besides the drawings, photographs and other graphic, nature also exist rich and colorful tangible objects. In general, according to the different space, the graphics can be divided into: 3d graphics and 2d graphics. The drawings, photographs of 2d graphics, all kinds of objects in the nature belongs to 3d graphics. In computer graphics, the process of 2d graphics rendering 3d graphics drawing is the basis, research of computer graphics generation must start from the 2d graphics. Computer graphics, no matter how complex, graphics are using some corresponding graphic element composed by graphical transformation. In computer graphics, often use graphics transformation, graphics transform refers to the graphical information through after new graphics geometry transform. The basic research object coordinate geometry transform in cartesian coordinate system in translation, rotation and change rules than etc. This paper mainly introduces some basic transformation of 2d graphics and its application in the rules.Keywords: a cartesian coordinate system, Translation, Rotating, application1用户坐标到屏幕坐标的变换实际图纸上坐标系是实数域中的直角坐标系或极坐标系,统称为用户坐标系;计算机设备(如屏幕)上采用的坐标系为整数域(如屏幕一般为直角左手系),称为设备坐标系。
因此用户坐标系中图形需经过变换才能绘制在图2-1 窗口区和视口区示意图设备(如屏幕)上。
用户坐标系中图形一般只有部分图形需要在设备上显示(或绘制),用户坐标中需要显示的图形(矩形区域)称为窗口,在设备(屏幕)上,显示(或绘制)图形的区域(矩形区域)称为视口。
在计算机上绘制图形时,实际的窗口区与视图区往往不一样大小,要在视图区正确地显示形体的,必须将其从窗口区变换到视图区。
1.1窗口到视口的变换内容图形从窗口到视口的变换亦称为数据规格化。
窗口到视口变换包括以下内容:(1)窗口逻辑坐标与设备坐标的转换,当把用户坐标系(逻辑单位)中的图形变换到视口中,视口中的坐标单位不再为逻辑单位,而是设备坐标(以像素为单位),根据设备的无关性,图形映射在视口上的图形大小应是不变的,这要求有像素与逻辑单位的转换比例(这一比例的大小随屏幕的大小和分辨率的高低有关)。
(2)用户坐标系所选区域内图形的坐标转换到屏幕上坐标不一定为整数,对转换后坐标值取整。
可通过四舍五入的方法将实型值的绝对值圆整化,最简单的方法是用赋值的类型转化规则来实现实型到整型的变换。
(3)用户坐标系到设备(屏幕)坐标系,坐标轴方向变换。
(4)屏幕坐标系水平方向与垂直方向刻度若不等(即像素间距不等)时,为保证图形不走样,还要进行比例变换。
1.2窗口区到视图区的坐标变换如图2-1 所示,根据图中比例关系,窗口区到视图区的坐标变换公式可写为:其中:总之,用矩阵表示为:2二维几何变换图形基本变换是指图形的比例变换、对称变换、旋转变换、错切变换、平移变换等。
通过对原图形上二维向量引进第三个坐标即三维点向量(又称齐次坐标点),简称齐次坐标,在三维齐次坐标下,二维几何变换都可统一用矩阵表示。
所谓齐次坐标就是将一个原本是n 维的向量用一个n+1 维向量来表示。
如向量的齐次坐标表示为,其中h 是一个实数。
显然一个向量的齐次表示是不唯一的,齐次坐标的h 取不同的值都表示的是同一个点,比如齐次坐标[8,4,2]、[4,2,1]表示的都是二维点[2,1]。
引进齐次坐标的优点:A.提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。
B.可以表示无穷远的点。
n+1 维的齐次坐标中如果h=0,实际上就表示了n 维空间的一个无穷远点。
对于齐次坐标[a,b,h],保持a,b 不变,的过程就表示了在二维坐标系中的一个点沿直线ax+by=0 逐渐走向无穷远处的过程。
2.1基本变换2.1.1.平移变换若图形上任意一点的坐标为(x, y) ,通过沿x和y 轴分别平移Tx和Ty后成为新图形上的一点( x′, y′) ,坐标变换用齐次坐标表示的平移变换:其中平移变换矩阵为2.1.2 比例变换若图形上任意一点的坐标为(x, y) ,通过沿x和y轴分别变比变换S x和S y后成为新图形上的一点(x2, y2) ,坐标变换:用齐次坐标表示的比例变换为:其中比例变换矩阵为:2.1.3 旋转变换若图像上任一点的坐标为(x,y),通过将对象上的各点(x,y)围绕原点逆时针转动一个角度θ,后成为新图像上的一点,坐标变换:用齐次坐标表示的旋转变换为:其中旋转变换矩阵为2.1.4对称变换若图形上任意一点的坐标为(x,y),关于x,y和原点分别作对称变换后成为新图像上的一点,对称变换可分别表示为:关于x坐标对称变换用齐次矩阵表示的对称变换:其中关于x作对称变换矩阵为关于y坐标对称变换用齐次矩阵表示的对称变换:其中关于y作对称变换矩阵为关于原点坐标对称变换:用齐次矩阵表示的对称变换:其中关于原点作对称变换矩阵为2.1.5错切1、沿x方向错切:沿+x方向错切,坐标变换沿-x方向错切,坐标变换用齐次矩阵表示的对称变换:2、沿y方向错切:沿+y方向错切,坐标变换沿-y方向错切,坐标变换用齐次矩阵表示的对称变换:2.2二维几何变换的级联(1)实际中的几何变换一次有若干个;(2)基本形式有局限性。
图形的级联变换是指图形作一次以上的基本变换,变换结果为每次基本变换矩阵乘积。
设图形经过n 次基本几何变换,其变换矩阵分别为T1, T2,…, Tn则:经T1后:经T2后:经T3后:称T=T1·T2…·Tn 为级联变换的变换矩阵。
下面介绍几种常见级联变换。
2.2.1复合平移若对图形首先做平移变换T1,然后再做平移变换T2,相应的平移变换矩阵分别为:变换结果为复合平移变换T,其复合平移变换矩阵为:2.2.2复合比例设比例变换T1矩阵为:设比例变换T2矩阵为:则复合比例变换T矩阵为:2.2.3复合旋转设比例变换T1矩阵为:设比例变换T2矩阵为:则复合比例变换T矩阵为:旋转变换和比例变换都与参考点有关,上面的旋转合比例变换均是相对与原点的。
如果相对于某一参考点(x0,y0)作比例和旋转变换,则其变换过程是先将坐标原点平移到(x0,y0),在再新的坐标系下作比例、旋转变换,然后将坐标原点平移回去,即复合变换。
2.2.4相对于点(x0,y0)的比例变换2.2.5相对于点(x0,y0)的旋转变换对于复合变换问题,关键是将其分解为一定顺序的基本变换,然后逐一进行这些基本变换,最终得到复合变换结果;或者求出这些基本变换矩阵乘积,亦可得到复合变换。
综上所述,可以证明利用齐次坐标表示方法,二维图形几何变换矩阵的一般变换过程为:,其中称为二维几何变换的一般表达时,进一步可以分为以下四个矩阵:对图像进行比例、旋转、对称等变换;对图像进行平移变换;对图像做投影变换。
产生整体比例变换。
3二维图像变换在实际中的应用3.1二维裁剪在二维图形的绘制或显示处理中,有时需要给出或显示某一部分原始图形。
这可在适当位置按一定边界范围定义一个矩形区域(即窗口),使窗口内图形为所需部分,将其保留下来作为绘制或显示之用,而窗口边界以外的图形则予以舍弃。
这种对二维原始图形的处理称为二维裁剪。
二维裁剪处理主要是判断图形元素是否在所开的窗口内,若在内则进一步求出窗口内的那一部分。
也就是说裁剪处理工作有两点:第一是窗口内外的判断;第二是计算图形元素与窗口边界的交点。
在定义一个窗口时,一般规定窗口为矩形框。
它在用户坐标系中的位置和大小用窗口对角点坐标或右下角点坐标(x1,y1)和右上角点坐标(x2,y2)来表示,有时也可用窗口原点(左下角点或右上角点)和窗口边长来表示。
在某些情况下,用户也可以用圆心和半径来定图形窗口,或定义其它窗口。
在实际应用中,往往需要观察某一图形的各个细部,或切产生不同比例的显示图形,这些都需要对原图形作二维处理。
裁剪处理是把每个图形元素分成窗口内的与窗口外两部分,舍弃窗口外部分。
虽然对不同的图形元素(如点、线段、多边形等)有不同的裁剪算法,但它们的原理都是一致的。