矩阵的坐标变换(转)

原文地址:http://www.cnblogs.com/Clingingboy/archive/2010/10/17/1853559.html

基本二维变换 
    基本二维变换有比例变换(Scaling)、旋转变换(Rotating)、错切变换(Shearing)和平移变换(Translating)。 
1)比例变换 
比例变换就是将平面上任意一点的横坐标放大或缩小S11倍,纵坐标放大或缩小S22倍,即 
 
其中S称为比例变换矩阵。图2.24是比例变换的几个例子。图中(b)是S11=S22的情况,(C)是S11≠S21的情况 

2)旋转变换 
    旋转变换就是将平面上任意一点绕原点旋转θ角,一般规定逆时针方向为正,顺时针方向为负。从图2.25可推出变换公式: 
 
3)错切变换 
    在旋转变换矩阵中,非对角线元素有何几何意义?观察图2.26中的例子。变换矩阵中元素S21起作把图形沿X方向“错切”的作用,Y值越小,错切量越小。S12则有将图形向Y方向“错切”的作用,同样其作用的大小与X值成正比。 
 
4)平移变换 
    平移交换指的是将平面上任意一点沿X方向移动C。,沿Y方向移动ty(图2.27),其变换公式为 
 
由上式可见,平移交换不能直接用2X2矩阵来表示。下述齐次坐标变换矩阵则可解决这个问题。

注意:这句话关键(疑问点在于为什么二位转换需要3x3的矩阵)

2.3.4 齐次坐标 
    如把平面上的点P=[Xy]放到空间去表示为[X Y H],使得x= X/H, y=Y/H 则称[X Y H」是点 P的齐次坐标。如规定齐次坐标的第三个分量H必须是 1,则称为规范齐次坐标。P=[xy」的规范齐次坐标是[x y 1]。显然,二维空间中描述的点与齐次坐标空间描述的点是一对多的关系。使用齐次坐标之后,平移交换可用矩阵乘法表示如下:

注意:现在可以看到平移的时候x1=x*1+x*0+x*tx,y1=y*0+y*1+y*ty即等于相加的做法,现在所有的转换都可以使用矩阵乘法了

2.3.5 复合变换 

实际问题中常遇到的是较为复杂的变换,但这些均可通过一系列的基本变换复合而成。下面举例说明。 
例1 绕任意点C=[Cx Cy]的旋转变换。图2.28总的变换可通过三个基本变换复合而成。先进行平移交换,平移量为-Cx和-Cy,然后绕原点旋转θ角,最后再进行平移量为Cx和Cy的平移变换。因此,任一点P经过逐次变换后的齐次坐标为

变换矩阵称为复合变换矩阵。

例 2相对于任意点 C=[Cx Cy]的比例变换

 
与例1其复合变换阵三个变换复合而成。即为  
 
由上述计算过程知,一个简单比例变换需要有三个计算步骤。对第一次平移,可看成是将变换物移动到坐标系的原点,第二次平移则可看成将变换物移回原位。 
例3 相对于直线 ax+by+c=0 进行对称变换  
 
此例可由五个基本变换复合而成,复合变换矩阵可按下式进行计算  
  
  

时间: 2024-08-28 20:45:43

矩阵的坐标变换(转)的相关文章

3D图形:坐标变换

引言 在3D图形学中,经常需要进行坐标变换的操作.所以,作为学习者,很有必要将坐标变换的原理掌握.在3D渲染流水线中,有很多的变换,基本上都是从一个坐标空间变换到另外一个坐标空间的.既然坐标变换在3D中用的如此的多,那么就应该详细的了解坐标变换的原理.这有助于我们理解3D流水线中的各种变换过程. 坐标变换 在DirectX 9.0读书笔记(1)向量一文中,详细的讲述了如何将A坐标系里面的坐标点变换到B坐标系中去.这里直接使用文章的结论,即:如果我们在A坐标系中有一个向量或者点,那么如何用在B坐标

点旋转和坐标系旋转

同一坐标系下的点旋转变换(如图1所示)和不同坐标系下的点变换(如图2所示),一直困扰着我,它们是两个不同的概念,但形式上有很相似,以二维空间为例做了下推导,加深理解. 同一坐标系下的点旋转变换,比较好理解,是在相同的坐标系下做的旋转变换.如图3所示,已知逆时针的旋转角度为θ,我们引入中间变量向量的长度r和水平夹角α,显而易见地,推导公式如下: 齐次坐标系的表达为: 不同坐标系下的点变换,这是透视变换中常用到的,它的作用是将一个点从一个坐标系统映射到另一个坐标系统下,这在将世界坐标系统映射到像极坐

GDI+编程小结

GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息. GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选. 一.              GDI+的特点和新增功能 GDI+与GDI一样,都具有设备无关性.应用程序的程序员可利用GDI+这样

SharpGL学习笔记(二) 模型变换

(二) 模型变换 模形变换就是指的在世界坐标系中(world space)做“移动”,“旋转", "缩放"三种操作. 首先要说明的,在Opengl中,是用4x4矩阵进行坐标变换,OpenGL的4x4矩阵是按列排列的,就像下面这样. 所谓的模型变换,就是对这个矩阵进行变换. 描述三维世界你就得先设计三维模形. 在设计三维模形的时候,它是们于模形坐标系中的,最终它会放置到世界坐标系统中,如果这个模形设计时处理的好的话,放到世界坐标系中时默认就是模形的中心定位于世界坐标系统的中心处

图解 WebGL & Three.js 工作原理

1.WebGL背后的工作原理是什么? 2.以Three.js为例,讲述框架在背后扮演什么样的角色? 我们为什么要了解原理? 我们假定你对WebGL已经有一定了解,或者用Three.js做过了一些东西,这个时候,你可能碰到了这样一些问题: 1.很多东西还是做不出来,甚至没有任何思路: 2.碰到bug无法解决,甚至没有方向: 3.性能出现问题,完全不知道如何去优化. 这个时候,我们需要了解更多. 1.什么是矩阵? 简单说来,矩阵用于坐标变换,如下图: 2.那它具体是怎么变换的呢,如下图: 3.举个实

opengl 在winCE系统的使用

WINCE系统上开发OpenGL程序需具备以下条件: 1. 处理器的支持,嵌入式处理器需支持3D加速渲染(测试使用的是Telichips 8901): 2. WINCE内核的支持,定制内核时需添加OpenGL ES相关组件. 以下是具体的参考代码: [cpp] view plain copy /******************************************************************** filename:   WinceOpenGLDemo.cpp c

Core Graphics图形变换

简单的坐标变换: Quarzd 2D提供了三个API进行坐标变换: //1.位移变换 CGContextTranslateCTM(CGContextRef c, CGFloat tx, CGFloat ty); 对于变换后的坐标系而言,原点位于原坐标系的(tx,ty)处.也相当于在原有坐标系下,所有点的横纵坐标分别增加tx和ty. //2.旋转变换 CGContextRotateCTM(CGContextRef c, CGFloat angle); 假设点A1经过坐标变换变到了A2,记坐标原点为

图解WebGL&Three.js工作原理

“哥,你又来啦?”“是啊,我随便逛逛.”“别介啊……给我20分钟,成不?”“5分钟吧,我很忙的.”“不行,20分钟,不然我真很难跟你讲清楚.”“好吧……”“行,那进来吧,咱好好聊聊” 一.我们讲什么? 我们讲两个东西:1.WebGL背后的工作原理是什么?2.以Three.js为例,讲述框架在背后扮演什么样的角色? 二.我们为什么要了解原理? 我们假定你对WebGL已经有一定了解,或者用Three.js做过了一些东西,这个时候,你可能碰到了这样一些问题:1.很多东西还是做不出来,甚至没有任何思路:

OpenGL原理学习笔记

说明:简单了解一下OpenGL的工作原理,初步认识计算机对于图形渲染的底层设计与实现,第一次接触,也没学过C艹,欢迎各位批评指正. 一  什么是OpenGL? OpenGL是一个开放标准(specification),是一种接口规范,并没有固定实现.每个硬件厂商负责对自己的硬件提供OpenGL接口标准的具体实现.三者关系如下链表:OpenGL API---硬件厂商[各自完成具体实现接口]--使用者[调用OpenGL提供的接口]. [厂商的第三方库并不开源,但目前已有开源GL实现的DEMO,如Me