三维坐标系的旋转矩阵

转载自;http://m.blog.csdn.net/blog/qiuqchen/21980731

为了方便自己记忆,记录一下三维坐标旋转矩阵的推导过程。

坐标的旋转变换在很多地方都会用到,比如机器视觉中的摄像机标定、图像处理中的图像旋转、游戏编程等。

任何维的旋转可以表述为向量与合适尺寸的方阵的乘积。最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述。坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ。

若以坐标系的三个坐标轴X、Y、Z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。

假设三维坐标系中的某一向量,其在直角坐标系中的图如图1所示。其中点P在XY平面、XZ平面、YZ平面的投影分别为点M、点P、点N。

图1 直角坐标系XYZ

一、绕Z轴旋转θ角

绕Z轴旋转,相当于在XY平面的投影OM绕原点旋转,如下图所示,OM旋转θ角到OM‘。

图2 向量绕Z轴旋转示意图

设旋转前的坐标为,旋转后的坐标为,则点M的坐标为,点M‘的坐标为。由此可得:

对于进行三角展开可得:

且有;可得绕Z轴旋转角的旋转矩阵为:

二、绕X轴旋旋转θ角

绕X轴旋转,相当于在YZ平面的投影ON绕原点旋转,如下图所示,ON旋转θ角到ON‘。

图3 向量绕X轴旋转示意图

设旋转前的坐标为,旋转后的坐标为,则点N的坐标为,点N‘的坐标为。由此可得:

对于进行三角展开可得:

且有;可得绕X轴旋转角的旋转矩阵为:

三、绕Y轴旋旋转θ角

绕Y轴旋转,相当于在XZ平面的投影OQ绕原点旋转,如下图所示,OQ旋转θ角到OQ‘。

图4 向量绕Y轴旋转示意图

设旋转前的坐标为,旋转后的坐标为,则点Q的坐标为,点Q‘的坐标为。由此可得:

对于进行三角展开可得:

且有;可得绕Y轴旋转角的旋转矩阵为:

四、绕X、Y、Z轴旋转的旋转矩阵分别为:

五、总结

啰啰嗦嗦终于打完所有的公式了,其实三个轴会推导其中一个轴的旋转矩阵的话,另外两个轴也类似地可以很容易推导出来。这里给出所有的推导过程只是为了我自己记忆的方便。当然也可以不旋转向量,而使用旋转坐标系的方法推导,两种方法是等价的。

公式的输入我使用了这篇博客http://blog.csdn.net/linraise/article/details/11712937给出的方法。还有一个小技巧,就是可以双击公式,在最上面的工具栏“图片”选项里直接修改公式的内容。

参考:

1、《学习OpenCV》

2、公式输入:http://blog.csdn.net/linraise/article/details/11712937

3、在线编辑公式:http://www.codecogs.com/latex/eqneditor.php

时间: 2024-10-22 15:55:45

三维坐标系的旋转矩阵的相关文章

关于三维坐标系基本概念的一些另类理解

先给一些教科书上的概念 概念1:左手坐标系和右手坐标系 三维坐标系分两种,左手坐标系和右手坐标系.下面就是这两个坐标系的规则示意图(图中固定了x轴的正方向向右,y轴的正方向向上): 例: OpenGL是右手坐标系,原点在左下角,向右为x轴正方向,向上为y轴正方向,z轴正方向为屏幕朝人眼的方向--高中数学教科书上的坐标系就是这种坐标系. iOS的UIKit是左手坐标系,原点在左上角,向右为x轴正方向,向下为y轴正方向,z轴正方向为屏幕朝人眼的方向 概念2:旋转正方向 对左手坐标系,确定一个旋转轴后

三维坐标系怎么画?

在中学时代主要接触的是二维平面坐标需系,但是在学习空间几何图形时,会需要用到三维坐标系,这就需要我们也要掌握其绘制方法,在黑板上画三维坐标系有点困难,所以要借助专业的绘图工具来完成,下面就一起来学习具体绘制技巧. 几何画板作为专业的几何绘图软件,可以用来研究平面几何和空间几何问题,这里可以借助该工具画三维坐标系.首先要安装几何画板软件,软件免费获取地址:http://wm.makeding.com/iclk/?zoneid=13398 具体的操作步骤如下: 步骤一 添加自定义工具.在广大版友的努

xyz三维坐标系怎么画?

坐标系统是描述物质存在的空间位置(坐标)的参照系,通过定义特定基准及其参数形式来实现.通过课本上的介绍,我们知道坐标系分为平面坐标系和三维坐标系,平面坐标系是很好画的,一般都是直角坐标系,那么三维坐标系怎么画呢? 几何画板作为专业的绘图工具,可以用来画立体几何图形,那么就需要先建立三维坐标系,具体操作步骤如下: 准备工作:下载并安装几何画板软件,访问http://wm.makeding.com/iclk/?zoneid=13398即可获取几何画板免费版. 具体的操作步骤如下: 步骤一 添加自定义

(转)三维旋转:旋转矩阵,欧拉角,四元数

如何描述三维空间中刚体的旋转,是个有趣的问题.具体地说,就是刚体上的任意一个点P(x, y, z)围绕过原点的轴(i, j, k)旋转θ,求旋转后的点P\'(x\', y\', z\'). 旋转矩阵 旋转矩阵乘以点P的齐次坐标,得到旋转后的点P',因此旋转矩阵可以描述旋转, ?????x′y′z′1?????=R??????xyz1?????[x′y′z′1]=R?[xyz1] 绕x,y,或z轴旋转θ的矩阵为: Rx(θ)=???1000cosθsinθ0?sinθcosθ???Rx(θ)=[1

计算 solvepnp 和 solvepnpRansac 求解 空间某一三维坐标系 到 摄像机三维坐标系的 三维旋转R 和 三维平移 T

参考: pnp问题 与 solvepnp函数:https://www.jianshu.com/p/b97406d8833c 对图片进行二维仿射变换cv2.warpAffine() or 对图片进行二维射影变换cv2.warpPerspective :https://www.jianshu.com/p/1c6512d475cc 关键:今天裁图过程中发现裁出来的一些图较正常图发生了奇怪的仿射变换,最后发现是solvepnp求解出的头部坐标系到摄像机坐标系的RT有错误,改用solvepnpRansac

Android OpenGL ES(十二):三维坐标系及坐标变换初步 .

OpenGL ES图形库最终的结果是在二维平面上显示3D物体(常称作模型Model)这是因为目前的打部分显示器还只能显示二维图形.但我们在构造3D模型时必须要有空间现象能力,所有对模型的描述还是使用三维坐标.也就是使用3D建模,而有OpenGL ES库来完成从3D模型到二维屏幕上的显示. 这个过程可以分成三个部分: 坐标变换,坐标变换通过使用变换矩阵来描述,因此学习3D绘图需要了解一些空间几何,矩阵运算的知识.三维坐标通常使用齐次坐标来定义.变换矩阵操作可以分为视角(Viewing),模型(Mo

HDU 3682 To Be an Dream Architect:查重【三维坐标系中点在实数上的映射】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3682 题意: 有一个n*n*n的立方体,左下角坐标为(1,1,1),接下来进行m次操作. 每个操作形如这样:"axis_1=a,axis_2=b". 例如:"x=3,y=1",意思是消去所有x=3,y=1的方块. RT: 题解: 问题的唯一矛盾在于:一个位置的方块可能被多次消去. 所以... (1)由于每一个坐标(x,y,z)在实数中有唯一映射:x*n*n+y*n+z,

三个欧拉角得到3x3旋转矩阵

三维坐标系中,已知三个欧拉角alpha,beta,gamma,分别为绕x轴旋转alpha角度,绕y轴旋转beta角度,绕z轴旋转gamma角度.则旋转矩阵Rotation的求法如下: Mat Rot=Mat::eye(3,3, CV_32FC1); Rot.at<float>(0, 0) = cos(beta) * cos(gamma); Rot.at<float>(0, 1) = cos(beta) * sin(gamma); Rot.at<float>(0, 2)

旋转矩阵、旋转向量、欧拉角、四元数的关系

向量的矩阵形式 有两个向量:\[\overrightarrow {\rm{a}} = ({a_1},{a_2},{a_3})\] \[\overrightarrow {\rm{b}} = ({b_1},{b_2},{b_3})\] 叉乘的结果表示一个向量,这个向量向量垂直于a,b向量构成的平面. \[\overrightarrow a \times \overrightarrow {\rm{b}} = \left\| {\begin{array}{*{20}{c}}{{e_1}}&{{e_2}}