旋转矩阵(Rotate Matrix)的性质分析

  学过矩阵理论或者线性代数的肯定知道正交矩阵(orthogonal matrix)是一个非常好的矩阵,为什么这么说?原因有一下几点:

  1. 正交矩阵每一列都是单位矩阵,并且两两相交。最简单的正交矩阵就是单位阵。
  2. 正交矩阵的逆(inverse)等于正交矩阵的转置(transpose)。同时可以推论出正交矩阵的行列式的值肯定为正负1的
  3. 正交矩阵满足很多矩阵性质,比如可以相似于对角矩阵等等。

  以上可以看出正交矩阵是非常特殊的矩阵,而本文题目中的旋转矩阵就是一种正交矩阵!它完美的诠释了正交矩阵的所有特点。



  先说一下什么是旋转矩阵?如图1所示,我们假设最开始空间的坐标系XAYAZ就是笛卡尔坐标系,这样我们得到空间A的矩阵VA={XAYAZA}T,其实也可以看做是单位阵E。进过旋转后,空间A的三个坐标系变成了图1中红色的三个坐标系XBYBZB,得到空间B的矩阵VB={XBYBZB}T。我们将两个空间联系起来可以得到VB=RVA,这里R就是我们所说的旋转矩阵。由于XA={1,0,0}TYA={0,1,0}TZA={0,0,1}T,结合图2可以看出,旋转矩阵R就是由XBYBZB 三个向量组成的。讲到这里,大家应该会发现旋转矩阵R满足第一个条件,因为单位向量无论怎么旋转长度肯定不会变而且向量之间的正交性质也不会变。那么旋转矩阵就是正交阵!不过这还不能说明问题,下面我更进一步利用数学公式进行证明。

                             

                        图1                                                    图2



  说一般的情况前,我们先说两点数学知识。(1)点乘(dot product)的几何意义:如图3,我们从点乘的公式可以得到α•β相当与β的模乘上αβ上投影的模,所以当|β|=1时,α•β就是指αβ上投影的模。这一点在下面的内容中非常重要。(2)旋转矩阵逆的几何意思:这个比较抽象,不过也好理解。旋转矩阵相当于把一个向量(空间)旋转成新的向量(空间),那么逆可以理解为由新的向量(空间)转回原来的向量(空间)。

图3

  接下来就是重点了,我们结合图4进行分析。上面已经说明了,旋转矩阵R就是由XBYBZB 三个向量组成的。我们来看看XBYBZB究竟是什么?由于图中所有的向量均是单位向量,所以XBXA点乘的结果可以看成XBXA上的投影的模,也就是XB在空间A中x轴的分量!!图中中间的位置列出了XB向量中的三个分量分别为XBXA上的投影的模、XBYA上的投影的模和XBZA上的投影的模。这从几何角度很好理解。以此类推,可以得出的旋转矩阵R的表达形式。我们根据图4可以惊喜的发现,矩阵R的第一行就是XAXBYBZB上的投影的模,也就是XAT。这个发现有什么用呢?图5做出解释。根据上面公式可以推出AB的旋转矩阵等于BA的旋转矩阵的转置。根据我们上一段所说的AB的旋转矩阵的逆就是等于BA的旋转矩阵,因此很容易推出R-1等于RT!这满足正交矩阵的第二个条件,又一次证明了旋转矩阵就是正交阵。在平时的工作中,我也测试过所有的旋转矩阵的行列式的值都是为1的,所以旋转矩阵满足正交阵的一切性质,可以说是很完美的矩阵。

                                   

                              图4                                        图5



  明天举一些列子来说明旋转矩阵的性质,先到这。  

  

  

时间: 2024-09-29 07:59:34

旋转矩阵(Rotate Matrix)的性质分析的相关文章

Rotate Matrix by One

记得有道Amazon的OA题目,好像是给定一个矩阵,让把矩阵的每个元素向右shift一个位置.这道题之前没有好好自习想过.今天正好刷到了rotate matrix,所以正好一块想了. 思路是类似LeetCode Spiral Matrix: 假设矩阵为方阵 设置top, left, bot, right四个边界变量,然后从最外圈到最内圈一圈一圈的shift. 设定一个count,当count < total elements in matrix的时候进行shift 在每一圈开始的时候记录下来ma

Matrix源码分析之第一篇

Matrix源码分析之第一篇 概述 前几天腾讯将一款Android应用性能监控的框架matrix开源了,源码地址在https://github.com/Tencent/matrix,作者是微信终端团队.matrix到底是什么?据官方说法如下:Matrix 是一款微信研发并日常使用的 APM(Application Performance Manage),当前主要运行在 Android 平台上. Matrix 的目标是建立统一的应用性能接入框架,通过各种性能监控方案,对性能监控项的异常数据进行采集

旋转子段(性质分析)

60分 n^2的暴力很显然嘛........ 枚举每个固定点,用个指针向区间两边扫 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #include<string> 7 #include<map> 8 #include<vector> 9 #define M

Codeforces 1175F 尺取法 性质分析

题意:给你一个数组,问有多少个区间,满足区间中的数构成一个排列. 思路(大佬代码):我们发现,一个排列一定含有1,所以我们不妨从1开始入手计算构成排列的区间个数.对于每个扫描到的1(假设处于位置i),我们向左右分别延伸,直到遇到1或者到了数组边界,延伸的时候,需要处理下左边到i的最大值和右边到i的最大值.处理之后,我们先处理排列的最大值在左端的情况.我们暴力枚举每一个位置,把它作为区间的左端点(L),现在我们去确认右端点(R),首先,右端点必须大于等于i,因为要包含1.我们先让右端点向左移,因为

【性质分析+数位DP】CF750G New Year and Binary Tree Paths

规律找完,不会DP,光荣爆零,身败名裂 而且这还是道原题!!原题!! 从只往一棵子树走的情况考虑 \(x\)往左走了\(z\)个儿子,那总和为\(x\sum\limits_{i=0}^{z}2^i=x(2^{z+1}-1)\) 考虑从上到下第\(y(y\in(2,z])\)个儿子变成了右儿子,其它不变,则贡献为\(x\sum\limits_{i=0}^{z}2^i+\sum\limits_{i=0}^{z-y}2^i=x(2^z-1)+2^{z-y+1}-1\) 然后你稍微看一下会发现,当\(z

第七节、双目视觉之空间坐标计算

在上一节我们已经介绍了如何对相机进行标定.然后获取相机的内部参数,外部参数. 内参包括焦距.主点.倾斜系数.畸变系数 其中γ为坐标轴倾斜参数,理想情况下为0. 外参包括旋转矩阵R.平移向量T,它们共同描述了如何把点从世界坐标系转换到摄像机坐标系,旋转矩阵描述了世界坐标系的坐标轴相对于摄像机坐标轴的方向,平移向量描述了在摄像机坐标系下空间原点的位置. 人类可以看到3维立体的世界,是因为人的两只眼睛,从不同的方向看世界,两只眼睛中的图像的视差,让我们可以看到三维立体的世界.类似的,要想让计算机"看到

Android Matrix源码详解

尊重原创,转载请标明出处   http://blog.csdn.net/abcdef314159 Matrix是一个3*3的矩阵,通过矩阵执行对图像的平移,旋转,缩放,斜切等操作.先看一段代码 public static final int MSCALE_X = 0; //!< use with getValues/setValues public static final int MSKEW_X = 1; //!< use with getValues/setValues public st

刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)

最近学习了一些关于三维空间旋转相关的知识,借此梳理一下备忘. 三维空间的旋转(3D Rotation)是一个很神奇的东东:如果对某个刚体在三维空间进行任意次的旋转,只要旋转中心保持不变,无论多少次的旋转都可以用绕三维空间中某一个轴的一次旋转来表示.表示三维空间的旋转有多种互相等价的方式,常见的有旋转矩阵.DCM.旋转向量.四元数.欧拉角等.本篇文章主要梳理一下这些表示方式及相互转换的方法. 1. 欧拉角(Euler Angle) 最直观的表示方式是绕刚体自身的X.Y.Z三个轴分别进行旋转某个角度

&lt;八&gt;面向对象分析之UML核心元素之分析类

一:基本概念        ---->在那大数项目中,分析类是被忽视的一种非常有用的元素.        ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处理的主要抽象概念的“第一个关口”.如果期望获得系统的“高级”概念性简述,则可对分析类本身进行维护,分析类还可产生系统设计的主要抽象——系统的设计类和子系统.二:分析类的性质        ----->分析类代表系中主要的“职责簇”,这以为着分析类是从功能性需求向计算机实现转化过程中的“第一个关口”