博客转载自:http://www.cnblogs.com/caster99/p/4703033.html

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

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

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

先说一下什么是旋转矩阵?如图1所示,我们假设最开始空间的坐标系XAYAZA就是笛卡尔坐标系,这样我们得到空间A的矩阵VA={XAYAZA}T,其实也可以看做是单位阵E。进过旋转后,空间A的三个坐标系变成了图1中红色的三个坐标系XBYBZB,得到空间B的矩阵VB={XBYBZB}T。我们将两个空间联系起来可以得到VB=RVA,这里R就是我们所说的旋转矩阵。

图1

由于XA={1,0,0}TYA={0,1,0}TZA={0,0,1}T,结合图2可以看出,旋转矩阵R就是由XBYBZB 三个向量组成的。讲到这里,大家应该会发现旋转矩阵R满足第一个条件,因为单位向量无论怎么旋转长度肯定不会变而且向量之间的正交性质也不会变。那么旋转矩阵就是正交阵!不过这还不能说明问题,下面我更进一步利用数学公式进行证明。

图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

图4

这个发现有什么用呢?图5做出解释。根据上面公式可以推出AB的旋转矩阵等于BA的旋转矩阵的转置。根据我们上一段所说的AB的旋转矩阵的逆就是等于BA的旋转矩阵,因此很容易推出R-1等于RT!这满足正交矩阵的第二个条件,又一次证明了旋转矩阵就是正交阵。在平时的工作中,我也测试过所有的旋转矩阵的行列式的值都是为1的,所以旋转矩阵满足正交阵的一切性质,可以说是很完美的矩阵。

图5

现在以三个欧拉角中的RotX为例(其余两个欧拉角以此类推),验证一下以上说的结论。

  首先结合图5的公式,计算出RotX的旋转矩阵Rrotx

  • 由于X轴是垂直于YoZ平面的,所以XAYBZB的点乘结果为0,同时XBYAZA的点乘结果也为0。
  • 由于XAXB都是单位向量,所以XAXB的点乘结果为1。
  • 由于绕x轴旋转,所以我们观察YBZB分别在YAZA上的投影情况,如图6,我已经将坐标标注了。
  • 图6
  • 这样就完成旋转矩阵Rrotx,我们接下来验证一下。
    1. 我们计算每一行每一列的模,都为1;并且任意两个列向量或者任意两个行向量都是正交的。所以满足上文列出的第一个性质。
    2. 我们计算Rrotx的行列式,很简单可以算出为1。这时我们计算一下该矩阵的逆和转置,这里我不写出来了是相等的。所以满足上文列出的第三个性质。
    3. 第三个性质要牵扯到更多的数学知识,在这里就不验证了。

      总结一下:旋转矩阵是一个完美的矩阵——正交矩阵。它的行列式为1,且每个列向量都是单位向量且相互正交,它的逆等于它的转置。

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

  1. Rotate Matrix by One

    记得有道Amazon的OA题目,好像是给定一个矩阵,让把矩阵的每个元素向右shift一个位置.这道题之前没有好好自己想过.今天正好刷到了rotate matrix,所以正好一块想了. 思路是类似Lee ...

  2. ML01 机器学习后利用混淆矩阵Confusion matrix 进行结果分析

      目标: 快速理解什么是混淆矩阵, 混淆矩阵是用来干嘛的. 首先理解什么是confusion matrix 看定义,在机器学习领域,混淆矩阵(confusion matrix),又称为可能性表格或是 ...

  3. [Leetcode] Template to rotate matrix

    Rotate the image by 90 degrees (clockwise). Given input matrix = [ [1,2,3,4], [5,6,7,8], [9,10,11,12 ...

  4. LeakCanary 与 鹅场Matrix ResourceCanary对比分析

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) LeakCanary是Square公司基于MAT开源的一个内存泄 ...

  5. BZOJ1802: [Ahoi2009]checker(性质分析 dp)

    题意 题目链接 Sol 一个不太容易发现但是又很显然的性质: 如果有两个相邻的红格子,那么第一问答案为0, 第二问可以推 否则第一问答案为偶数格子上的白格子数,第二问答案为偶数格子上的红格子数 #in ...

  6. CF1168B Good Triple 性质分析_好题

    题意翻译 给出01串s,求数对[l,r]个数,使得能找到至少一对[x,k],使1<=x,k<=|s|且l<=x<x+2k<=r且s[x]=s[x+k]=s[x+2k] 题 ...

  7. 【LeetCode】寻找两个有序数组的中位数【性质分析+二分】

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...

  8. CF1051F The Shortest Statement Dijkstra + 性质分析

    动态询问连通图任意两点间最短路,单次询问. 显然,肯定有一些巧妙地性质(不然你就发明了新的最短路算法了233)有一点很奇怪:边数最多只比点数多 $20$ 个,那么就可以将这个图看作是一个生成树,上面连 ...

  9. BZOJ 1112: [POI2008]砖块Klo Splay + 性质分析

    Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s".in",& ...

随机推荐

  1. C#中的线程(一)入门

    C#中的线程(一)入门   Keywords:C# 线程Source:http://www.albahari.com/threading/Author: Joe AlbahariTranslator: ...

  2. 第六次scrum meeting记录

    文章负责:刘斯盾 日期:2017年10月30日 会议地点:新主楼F座二楼 各组员工作情况 团队成员 昨日完成任务 明日要完成任务 赵晓宇 评分界面搭建 issue17 课程列表页面搭建 issue20 ...

  3. linux 处理端口

    1.查看8080端口是否被占用: netstat -anp | grep 8080 2.查看占用8080端口的进程:fuser -v -n tcp 8080 3.杀死占用8080端口的进程: kill ...

  4. xdebug的安装测试

    1.下载 php -version PHP 7.2.0 (cli) (built: Dec 7 2017 23:07:46) ( NTS DEBUG ) 如果PHP版本是7.2以上的必须要下载Xdeb ...

  5. UVA - 242 Stamps and Envelope Size (完全背包+bitset)

    题意:给你一些邮票面值的集合,让你选择其中一个集合,使得“能用不超过n枚集合中的邮票凑成的面值集合S中从1开始的最大连续面值”(即mex(S)-1)最大.如果有多解,输出集合大小最小的一个:如果仍有多 ...

  6. HNOI2004 宠物收养所 (平衡二叉树)

    题目链接 平衡树基础题,用于测试各种平衡树的性能(雾) treap: #include<bits/stdc++.h> typedef long long ll; using namespa ...

  7. poj2411 Mondriaan's Dream[简单状压dp]

    $11*11$格子板上铺$1*2$地砖方案.以前做过?权当复习算了,毕竟以前学都是浅尝辄止的..常规题,注意两个条件:上一行铺竖着的则这一行同一位一定要铺上竖的,这一行单独铺横的要求枚举集合中出现连续 ...

  8. hadoop-sqoop学习笔记

    ======导入==== sqoop import --connect jdbc:mysql://20.12.20.165:3306/luo0907 --username root --passwor ...

  9. RabbitMQ用户角色及权限控制(不错)

    ########################用户角色####################### RabbitMQ的用户角色分类:none.management.policymaker.moni ...

  10. Unity 5 官方打包管理工具 Asset Bundle Manager

    http://blog.csdn.net/suifcd/article/details/51570003 Unity5在Asset bundle 打包管理上采用了全新的方式,不需要再对每个文件进行MD ...