本文结合matlab 软件解释二维坐标系下的平移,旋转,缩放

首先确定点在二维坐标系下的表达方法,使用一个1*3矩阵:

Pt = [x,y,1]

其中x,y 分别为点的X,Y坐标,1为对二维坐标的三维扩充,即将二维坐标平面上的点移动到三维坐标面Z=1上来,这样的变化并没改变图形的形状,这种变化叫做齐次变换。

pt移动dx dy 后可得到移动后的点为pt’[x+dx,y+dy,1]

可以由如下关系表示

Pt’ = pt*Move。其中:

类似的,假设x y 放大系数为sx sy

那么有如下矩阵:

X,y旋转角度为t(t为逆时针旋转角度),那么旋转矩阵为

需要注意的是:

旋转与放缩均为相对坐标原点(0,0)的,坐标的旋转中心为(0,0),放缩N倍后,坐标质心坐标变为(Nx,Ny),质心位置发生偏移。

1.当坐标点A(x,y)需要相对某一点(x1,y1)旋转角度T时,首先要将坐标原点移动到此点,意即,首先将要旋转的点投影到以参考点为原点的坐标系,旋转后,再投影回原坐标系,两个坐标系存在平移关系。

首先进行移动操作

dx = -x1,dy=-y1

然后再进行旋转操作

t = T

旋转之后将坐标移动回来

dx = x1, dy = y1

三者顺序不能颠倒。将A坐标顺序与三个矩阵相乘,得到最终结果。同理,当一点相对某参考点放缩时,也首先需要将坐标系原点平移参考点,放缩后在移回原原点(0,0)。

2 当坐标点相对某参考点放缩,旋转同时发生时,旋转与放缩的相对顺序并不影响最终结果,两者的顺序可以是任意的(后面可以通过验证放缩,旋转矩阵是否满足交换律证明)。

下面讨论二维坐标平移,旋转,放缩的matlab实现。

由于对坐标,转换参数的矩阵化表示,因此很容易考虑到Matlab实现。

Matlab 对于矩阵的原生支持,以及强大的绘图能力,均为我们直观,生动的理解坐标变换提供了良好支持。

下面考虑如下问题,点(2,2)绕(1,1)逆时针旋转45度后的坐标是多少?

本问题中 坐标点x为(2,2),参考点ref 为(1,1)。旋转角度t=45。按照前文所述,实现顺序为平移->旋转->平移。

Matlab 实现如下:

X = [2 2 1]

求得x1 为 [1  2.4142  1]

2 下面可以验证 rotateMatrix,scaleMatrix的交换律证明放缩,旋转的顺序问题,实际上可以发现scaleMatrix 为对角矩阵,因此两个矩阵肯定满足交换律的。但换做普通矩阵就不能满足交换律,如平移矩阵。

本文所述可能存在错误,还请高手指正。

2013.8.22

二维坐标的平移,旋转,缩放及matlab实现的更多相关文章

  1. OpenGL屏幕二维坐标转化成三维模型坐标

    我们把OpenGL里模型的三维坐标往二维坐标的转化称为投影,则屏幕上的二维坐标往三维坐标转化则可以称为反投影,下面我们来介绍一下反投影的方法. 主要是gluUnProject函数的使用,下面是代码: ...

  2. Win窗口坐标二维坐标与OpenGl的世界坐标系的之间的相互转换

    Win窗口坐标二维坐标与OpenGl的世界坐标系的转换 几何处理管线擅长于使用视图和投影矩阵以及用于裁剪的视口把顶点的世界坐标变换为窗口坐标. 但是,在有些情况下,需要逆转这个过程.一种常见的情形是: ...

  3. osg中使用MatrixTransform来实现模型的平移/旋转/缩放

    osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html# ...

  4. osg矩阵变换节点-----平移旋转缩放

    osg矩阵变换节点-----平移旋转缩放 转自:http://www.cnblogs.com/ylwn817/articles/1973396.html 平移旋转缩放这个三个是osg矩阵操作中,最常见 ...

  5. UVALive 5102 Fermat Point in Quadrangle 极角排序+找距离二维坐标4个点近期的点

    题目链接:点击打开链接 题意: 给定二维坐标上的4个点 问: 找一个点使得这个点距离4个点的距离和最小 输出距离和. 思路: 若4个点不是凸4边形.则一定是端点最优. 否则就是2条对角线的交点最优,能 ...

  6. Excel 二维数组(数据块)旋转/翻转技巧

    Excel 二维数组(数据块)旋转/翻转技巧 原创 2017-12-30 久石六 久石六 工作中遇到个问题,需要将Excel中的数据块或者说二维数组向右旋转90度,才能再加工处理.当然,不是旋转文本方 ...

  7. 用C#控制台编写 推箱子之类的 坐标移动----之二维坐标

     //首先用枚举 列出方向  上,下,左,右(枚举的最后一位数后不用符号  否则会报错)        public enum dro    {       up = 1,        down = ...

  8. JAVA根据A星算法规划起点到终点二维坐标的最短路径

    工具类 AStarUtil.java import java.util.*; import java.util.stream.Collectors; /** * A星算法工具类 */ public c ...

  9. [opengl] 画一个可移动的自行车 二维几何变换(平移、旋转、缩放)

    #include <cmath> #include "glut.h" #include "iostream" using namespace std ...

随机推荐

  1. 【高斯消元】BZOJ 1770: [Usaco2009 Nov]lights 燈

    Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...

  2. jquery mobile validation

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  3. sql删除wordpress没用的postmeta记录

    支持多作者的wordpress博客,有时需要审核他们的文章内容,虽然UGC(User-generated content)整体是好的,但是也要控制一下质量,实在不相关或spam的文章就要毫不手软的删除 ...

  4. eclipse 安装配置maven

    1.安装maven 插件 从eclipse 3.7(indigo)之后,m2e 插件已host到eclipse.org 站点下: Since Eclipse 3.7 (Indigo), m2e is ...

  5. How To Monitor Remote Linux Host using Nagios 3.0

    In the previous post Nagios 3.0 Jumpstart guide , I explained the overview, installation and configu ...

  6. 【leetcode】Longest Substring Without Repeating Characters (middle)

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  7. windows中断与共享的连接(samba)

    问题:window下当成功登录到samba服务器上的共享的目录的时候,若要是再系想登录此服务器上另外一个共享目录时,会弹出登录窗口. 但是不管输入的用户名和密码对错都会提示. “不允许一个用户使用一个 ...

  8. 【疯狂Java讲义学习笔记】【数据类型与运算符】

    [学习笔记]1.8bit = 1byte,4byte = 1word.Java中的整型数据有byte(1字节),short(2字节),int(4字节),long(8字节).Java中的浮点数据有flo ...

  9. BZOJ 4003 JLOI2015 城池攻占

    做法和APIO2012派遣 那道题目类似 在树上DFS,维护当前子树的小根堆 因为需要合并孩子们的信息,使用左偏树就可以了 每次弹出死亡骑士,对剩余骑士打上奖励标记 至于标记的下传和更改,只需要每次在 ...

  10. [itint5]任务调度

    http://www.itint5.com/oj/#10 拓扑排序.首先按照题目给出的数据结构复杂度不会是O(v+e)的,所以先要变换数据结构.二来写的时候用一个stack会更好点.还有就是题目里其实 ...