本文结合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. ios设备 分辨率(转)

    1 iOS设备的分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 iPhone/iPod Touch 普屏分辨率    320像素 x 480像素 Retina ...

  2. [转]struct实例字段的内存布局(Layout)和大小(Size)

    在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...

  3. iOS 添加阴影后 屏幕卡顿 抖动

    - (void)awakeFromNib { // Initialization code _btnViews.layer.shadowPath =[UIBezierPath bezierPathWi ...

  4. zepto点击事件兼容pc和mobile

    判断pc还是mobile,重写click事件 var CLICK='click'; (function browserRedirect() { var sUserAgent = navigator.u ...

  5. UOJ Round #8 赴京赶考 解题报告

    算法零 $n,m \le 100, q \le 10$ 的话,直接给网格中的每一个格点都建一个点,然后该怎么最短路就怎么最短路,该怎么并查集+BFS就怎么并查集+BFS. 复杂度 $O(qnm)$,可 ...

  6. 团体程序设计天梯赛-练习集L2-007. 家庭房产

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...

  7. CF135A Replacement

    http://codeforces.com/problemset/problem/135/A 题意 : 我能说我卡在这个题的题意上很久吗.....这个题就是在数组里找一个数,然后找另一个数把他替换掉, ...

  8. hdu 2509 Be the Winner 博弈论

    博弈论水题!!! 代码如下: #include<stdio.h> #include<iostream> using namespace std; int main(){ int ...

  9. 5.查找最小的k个元素(数组)

    题目: 输入n个整数,输出其中最小的k个,例如输入1,2,3,4,5,6,7,8这8个数,则最小的4个是1,2,3,4(输出不要求有序) 解: 利用快速排序的partition,算导上求第k大数的思想 ...

  10. http://jingyan.baidu.com/article/a378c960630e61b329283045.html

    http://jingyan.baidu.com/article/a378c960630e61b329283045.html