二维图形的几何变换【转】

转自:lab104_yifan
http://blog.csdn.net/accelerator_/article/details/39253983

1、基本几何变换及变换矩阵

基本几何变换都是相对于坐标原点和坐标轴进行的几何变换,有平移、比例、旋转、反射和错切等。

1.1 平移变换

是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。他是一种不产生变形而移动物体的刚体变换(rigid-body transformation),如下图所示。

图1-1 平移变换

推导:

求得平移变换矩阵如下:

 其中Tx,Ty称为平移矢量。

1.2 缩放变换

缩放变换是指对p点相对于坐标原点沿x方向放缩Sx倍,沿y方向放缩Sy倍。其中Sx和Sy称为缩放系数。

图1-2缩放变换(Sx=2,Sy=3)

推导:

矩阵:

缩放变换可改变物体的大小,如下图所示。当Sx=Sy >1时,图形沿两个坐标轴方向等比例放大;当Sx=Sy<1,图形沿两个坐标轴方向等比例缩小;当Sx≠Sy,图形沿两个坐标轴方向作非均匀的比例变换。

图1-3比例变换
(a)Sx与Sy相等                                                      (b)Sx与Sy不相等

1.3 旋转变换

二维旋转是指将p点绕坐标原点转动某个角度(逆时针为正,顺时针为负)得到新的点p’的重定位过程。

图1-4旋转变换

推导:利用极坐标方程

逆时针旋转θ角的矩阵如下:

1.4 对称变换

对称变换后的图形是原图形关于某一轴线或原点的镜像。

图1-5对称变换

(1)关于x轴对称

图1-6关于x轴对称

(2)关于y轴对称

图1-7关于y轴对称

(3)关于原点对称

图1-8关于原点对称

(4)关于y=x轴对称

图1-9关于y=x轴对称

(5)关于y=-x轴对称

图1-10关于y=-x轴对称

1.5 错切变换

错切变换也称为剪切、错位变换,用于产生弹性物体的变形处理。

图1-11错切变换

错切变换的变换矩阵为:

(1)沿x方向错切:b=0
    (2)沿y方向错切:c=0
    (3)两个方向错切:b和c都不等于0。

2、 复合变换

如果图形要做一次以上的几何变换,那么可以将各个变换矩阵综合起来进行一步到位的变换。复合变换有如下的性质:

1)复合平移

对同一图形做两次平移相当于将两次的平移两加起来:

2)复合缩放

两次连续的缩放相当于将缩放操作相乘:

3)复合旋转

两次连续的旋转相当于将两次的旋转角度相加:

缩放、旋转变换都与参考点有关,上面进行的各种变换都是以原点为参考点的。如果相对某个一般的参考点(xfyf)作缩放、旋转变换,相当于将该点移到坐标原点处,然后进行缩放、旋转变换,最后将(xfyf)点移回原来的位置。

4)关于(xfyf)点的缩放变换

5)绕(xfyf)点的旋转变换

3、二维图形几何变换的计算

几何变换均可表示成P’=P*T的形式

(1)点的变换:先将点表示为规范化齐次坐标形式,再乘以变换矩阵。

(2)直线的变换:将直线的两个端点表示为规范化齐次坐标形式,再乘以变换矩阵。

(3)多边形的变换:将多边形的顶点表示为规范化齐次坐标形式,再乘以变换矩阵。

(4)曲线的变换:将曲线的每个点表示为规范化齐次坐标形式,再乘以变换矩阵。

4、复合变换的矩阵点乘的先后问题

1)如果采用以下方式计算几何变换的变换矩阵:

如上范例所示,其先执行变换的矩阵放在前面,后执行变换的矩阵放在后面。

2)如果采用以下方式计算几何变换的变换矩阵:

如上范例所示,其先执行变换的矩阵放在后面,后执行变换的矩阵放在前面。

这是因为矩阵的特性:

时间: 2024-10-05 20:48:32

二维图形的几何变换【转】的相关文章

二维图形的矩阵变换(一)——基本概念

基本的二维变换可包括旋转.缩放.扭曲,和平移四种,              而这些几何运算则可以转换为一些基本的矩阵运算: 这几个变换都是线性的,但平移运算不是线性的,不能通过2*2矩阵运算完成.若要将点 (2, 1)在 x 方向将其平移 3 个单位,在 y 方向将其平移 4 个单位. 可通过先使用矩阵乘法再使用矩阵加法来完成此操作. 综合这几种基本运算,数学家们将其统一为一个3*3矩阵,存储形式如下: 由于表示仿射变换的矩阵的第三列总是(0,0,1),在存储矩阵的时候,大多只存成一个2*3的

图形学_二维图形的剪裁_Sutherland-Hodgeman_Cohen—Sutherland

一.Cohen-Sutherland剪裁算法 1.基本思想 对于每条线段P1P2分为三种情况处理: (1)若P1P2完全在窗口内,则显示该线段P1P2. (2)若P1P2明显在窗口外,则丢弃该线段. (3)若线段不满足(1)或(2)的条件,则在交点处把线段分为两段.其中一段完全在窗口外,可弃之.然后对另一段重复上述处理. 为快速判断,采用如下编码方法: 将窗口边线两边沿长,得到九个区域,每一个区域都用一个四位二进制数标识,直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界

二维图形旋转公式的推导

关于二维图形旋转可能在非常多计算机图形学相关的书籍上都会介绍,然而真正理解公式推导过程的却讲得不多. 那么怎样推导出二维图形绕某一点旋转的公式呢?我在这里就将其推导过程简要的说明一下. 事实上推导过程比較简单,首先我们来看一幅图,看看怎样推导出二维图形绕原点进行旋转的公式. 上图画的比較粗略,只是能说明问题就够了.如果旋转前的点位于P处.旋转之后的点位于P'处. 怎样求旋转之后的点P'坐标? 在图中.旋转之前P的方向角是a,旋转之后P'的方向角就变为a+b,这里b就是旋转的角度.所谓方向角是改点

二维图形的矩阵变换(三)——在WPF中的应用矩阵变换

UIElement和RenderTransform 首先,我们来看看什么样的对象可以进行变换.在WPF中,用于呈现给用户的对象的基类为Visual类,但是Visual对象并不具有变换功能,具有变换功能的是它的子类UIElement.这个类也是非常底层的类了,几乎我们所有的常用控件都是继承自它,也就是说,基本上所有的UI对象都是可以应用变换的. 然后,我们在再来看看UIElement中变换种类.UIElement支持两种变换:RenderTransform和LayoutTransform,其中La

二维图形的矩阵变换(二)——WPF中的矩阵变换基础

在前文二维图形的矩阵变换(一)——基本概念中已经介绍过二维图像矩阵变换的一些基础知识,本文中主要介绍一下如何在WPF中进行矩阵变换. Matrix结构 在WPF中,用Matrix结构(struct类型)表示二维变换矩阵,它是一个3*3的数组,结构如下, 由于第三列是常量0,0,1,因此并不作为公开属性,可见的只有剩余六个属性. 构造变换 虽然Matrix类公开了这六个属性让我们设置,但是靠直接设置这六个属性来实现平移.旋转等变换对于我们来说实在太困难了,因此又增加了如下许多函数来帮助我们实现这一

二维图形变换

5.1二维图形变化 一.向量 是具有长度和方向的实体 二.特殊的线性组合 (1)仿射组合 (2)凸组合(对仿射组合加以更多的限制) 三.向量的点积和叉积 (1)点积 两个向量夹角的余弦值等于两个单位向量的点积 (2)叉积 两个向量的叉积是另一个三维向量,且与两个向量均正交 利用叉积求平面的法向量,三点可确定一个平面 5.2 图形坐标系 1.世界坐标系 是一个公共坐标系,是现实中物体或场景的统一参考系 2.建模坐标系 又称局部坐标系,每个物体有自己的局部中心和坐标系 3.观察坐标系 从观察者的角度

[转]二维图形的矩阵变换(一)——基本概念

来源:http://www.cnblogs.com/TianFang/p/3920734.html 基本的二维变换可包括旋转.缩放.扭曲,和平移四种,              而这些几何运算则可以转换为一些基本的矩阵运算: 这几个变换都是线性的,但平移运算不是线性的,不能通过2*2矩阵运算完成.若要将点 (2, 1)在 x 方向将其平移 3 个单位,在 y 方向将其平移 4 个单位. 可通过先使用矩阵乘法再使用矩阵加法来完成此操作. 综合这几种基本运算,数学家们将其统一为一个3*3矩阵,存储形

openGL实现二维图形和三维图形

openGL是一个强大的底层图形库,其命令最初的时候使用C语言实现的.openGL定义了一个图形程序接口,常用于制作处理三维图像,功能强大,调用方便,在图像处理十分受欢迎. 实现图形主要使用的是openGL的一个工具包:GLUT. GLUT (pronounced like the glut in gluttony) is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL prog

QT 二维图形 原理、发展及应用

转载自 网易博客:sun的博客 http://zhouyang340.blog.163.com/blog/static/3024095920126710504178/ 2D绘图 Qt4中的2D绘图部分称为Arthur绘图系统.它由3个类支撑整个框架,QPainter,QPainterDevice和QPainterEngine.QPainter用来执行具体的绘图相关操作如画点,画线,填充,变换,alpha通道等.QPainterDevice是QPainter用来绘图的绘图设备,Qt中有几种预定义的