坐标系旋转矩阵推导过程
2017-03-14 20:35
113 查看
一、先来个平面旋转的分析:
![](http://images.cnitblog.com/blog/648006/201411/251947020271681.png)
旋转变换一般是按照某个圆心点,以一定半径 r 旋转一定的角度
假定点A(x,y)想经过旋转变换到达B(x',y'),已知旋转角度
![](http://images.cnitblog.com/blog/648006/201411/251933285905256.jpg)
要计算点B则分别计算他的x'和y'分量
![](http://images.cnitblog.com/blog/648006/201411/251948306213713.png)
根据矩阵乘法计算规则,可以推出
![](http://images.cnitblog.com/blog/648006/201411/251949065271245.png)
只要给出旋转角度,计算出矩阵,然后使用这个矩阵分别左乘每一个点,就能计算出这个点旋转后的点坐标 这样我们就可以通过矩阵变换坐标了
二、延伸到三维坐标:
坐标的旋转变换在很多地方都会用到,比如机器视觉中的摄像机标定、图像处理中的图像旋转、游戏编程等。
任何维的旋转可以表述为向量与合适尺寸的方阵的乘积。最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述。坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ。
若以坐标系的三个坐标轴X、Y、Z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。
假设三维坐标系中的某一向量
![](http://latex.codecogs.com/gif.latex?%5Cvec%7BOP%7D=(x,y,z)%5E%7BT%7D)
,其在直角坐标系中的图如图1所示。其中点P在XY平面、XZ平面、YZ平面的投影分别为点M、点P、点N。
![](https://img-blog.csdn.net/20140324192702062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl1cWNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图1 直角坐标系XYZ
1、
![](http://latex.codecogs.com/gif.latex?%5Cvec%7BOP%7D)
绕Z轴旋转θ角
绕Z轴旋转,相当于
![](http://latex.codecogs.com/gif.latex?%5Cvec%7BOP%7D)
在XY平面的投影OM绕原点旋转,如下图所示,OM旋转θ角到OM'。
![](https://img-blog.csdn.net/20140324194131687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl1cWNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图2 向量绕Z轴旋转示意图
设旋转前的坐标为
![](http://latex.codecogs.com/gif.latex?(x,y,z)%5E%7BT%7D)
,旋转后的坐标为
![](http://latex.codecogs.com/gif.latex?(x%27,y%27,z%27)%5E%7BT%7D)
,则点M的坐标为
![](http://latex.codecogs.com/gif.latex?(x,y)%5E%7BT%7D)
,点M'的坐标为
![](http://latex.codecogs.com/gif.latex?(x%27,y%27)%5E%7BT%7D)
。由此可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738175720i.png)
对于
![](http://latex.codecogs.com/gif.latex?x%27)
和
![](http://latex.codecogs.com/gif.latex?y%27)
进行三角展开可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_14377382793wV2.png)
且有
![](http://latex.codecogs.com/gif.latex?z%27=z)
;可得绕Z轴旋转
![](http://latex.codecogs.com/gif.latex?%5Ctheta)
角的旋转矩阵为:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738261t4pc.png)
2、
![](http://latex.codecogs.com/gif.latex?%5Cvec%7BOP%7D)
绕X轴旋旋转θ角
绕X轴旋转,相当于
![](http://latex.codecogs.com/gif.latex?%5Cvec%7BOP%7D)
在YZ平面的投影ON绕原点旋转,如下图所示,ON旋转θ角到ON'。
![](https://img-blog.csdn.net/20140324210946921?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl1cWNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图3 向量绕X轴旋转示意图
设旋转前的坐标为
![](http://latex.codecogs.com/gif.latex?(x,y,z)%5E%7BT%7D)
,旋转后的坐标为
![](http://latex.codecogs.com/gif.latex?(x%27,y%27,z%27)%5E%7BT%7D)
,则点N的坐标为
![](http://latex.codecogs.com/gif.latex?(z,y)%5E%7BT%7D)
,点N'的坐标为
![](http://latex.codecogs.com/gif.latex?(z%27,y%27)%5E%7BT%7D)
。由此可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738319hzZY.png)
对于
![](http://latex.codecogs.com/gif.latex?z%27)
和
![](http://latex.codecogs.com/gif.latex?y%27)
进行三角展开可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738347k1R7.png)
且有
![](http://latex.codecogs.com/gif.latex?x%27=x)
;可得绕X轴旋转
![](http://latex.codecogs.com/gif.latex?%5Ctheta)
角的旋转矩阵为:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738374P4Ff.png)
3、
![](http://latex.codecogs.com/gif.latex?%5Cvec%7BOP%7D)
绕Y轴旋旋转θ角
绕Y轴旋转,相当于
![](http://latex.codecogs.com/gif.latex?%5Cvec%7BOP%7D)
在XZ平面的投影OQ绕原点旋转,如下图所示,OQ旋转θ角到OQ'。
![](https://img-blog.csdn.net/20140324212723625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl1cWNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图4 向量绕Y轴旋转示意图
设旋转前的坐标为
![](http://latex.codecogs.com/gif.latex?(x,y,z)%5E%7BT%7D)
,旋转后的坐标为
![](http://latex.codecogs.com/gif.latex?(x%27,y%27,z%27)%5E%7BT%7D)
,则点Q的坐标为
![](http://latex.codecogs.com/gif.latex?(x,z)%5E%7BT%7D)
,点Q'的坐标为
![](http://latex.codecogs.com/gif.latex?(x%27,z%27)%5E%7BT%7D)
。由此可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738451Dry2.png)
对于
![](http://latex.codecogs.com/gif.latex?x%27)
和
![](http://latex.codecogs.com/gif.latex?z%27)
进行三角展开可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738479DR00.png)
且有
![](http://latex.codecogs.com/gif.latex?y%27=y)
;可得绕Y轴旋转
![](http://latex.codecogs.com/gif.latex?%5Ctheta)
角的旋转矩阵为:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738582mGVs.png)
4、绕X、Y、Z轴旋转的旋转矩阵分别为:
两角和(差)公式
![](http://images.cnitblog.com/blog/648006/201411/251947020271681.png)
推导
旋转变换一般是按照某个圆心点,以一定半径 r 旋转一定的角度α,为了简单起见我们给出下面的情景
假定点A(x,y)想经过旋转变换到达B(x',y'),已知旋转角度
α和点A坐标,计算出点B
![](http://images.cnitblog.com/blog/648006/201411/251933285905256.jpg)
要计算点B则分别计算他的x'和y'分量
![](http://images.cnitblog.com/blog/648006/201411/251948306213713.png)
根据矩阵乘法计算规则,可以推出
![](http://images.cnitblog.com/blog/648006/201411/251949065271245.png)
只要给出旋转角度,计算出矩阵,然后使用这个矩阵分别左乘每一个点,就能计算出这个点旋转后的点坐标 这样我们就可以通过矩阵变换坐标了
二、延伸到三维坐标:
坐标的旋转变换在很多地方都会用到,比如机器视觉中的摄像机标定、图像处理中的图像旋转、游戏编程等。
任何维的旋转可以表述为向量与合适尺寸的方阵的乘积。最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述。坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ。
若以坐标系的三个坐标轴X、Y、Z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。
假设三维坐标系中的某一向量
,其在直角坐标系中的图如图1所示。其中点P在XY平面、XZ平面、YZ平面的投影分别为点M、点P、点N。
图1 直角坐标系XYZ
1、
绕Z轴旋转θ角
绕Z轴旋转,相当于
在XY平面的投影OM绕原点旋转,如下图所示,OM旋转θ角到OM'。
图2 向量绕Z轴旋转示意图
设旋转前的坐标为
,旋转后的坐标为
,则点M的坐标为
,点M'的坐标为
。由此可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738175720i.png)
对于
和
进行三角展开可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_14377382793wV2.png)
且有
;可得绕Z轴旋转
角的旋转矩阵为:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738261t4pc.png)
2、
绕X轴旋旋转θ角
绕X轴旋转,相当于
在YZ平面的投影ON绕原点旋转,如下图所示,ON旋转θ角到ON'。
图3 向量绕X轴旋转示意图
设旋转前的坐标为
,旋转后的坐标为
,则点N的坐标为
,点N'的坐标为
。由此可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738319hzZY.png)
对于
和
进行三角展开可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738347k1R7.png)
且有
;可得绕X轴旋转
角的旋转矩阵为:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738374P4Ff.png)
3、
绕Y轴旋旋转θ角
绕Y轴旋转,相当于
在XZ平面的投影OQ绕原点旋转,如下图所示,OQ旋转θ角到OQ'。
图4 向量绕Y轴旋转示意图
设旋转前的坐标为
,旋转后的坐标为
,则点Q的坐标为
,点Q'的坐标为
。由此可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738451Dry2.png)
对于
和
进行三角展开可得:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738479DR00.png)
且有
;可得绕Y轴旋转
角的旋转矩阵为:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_1437738582mGVs.png)
4、绕X、Y、Z轴旋转的旋转矩阵分别为:
![](http://blog.chinaunix.net/attachment/201507/24/25296429_14377385672ZqP.png)
相关文章推荐
- 绕任意轴旋转的矩阵推导 (D3D 左手坐标系)
- 关于图形数学的基本问题,沿任意轴旋转,或者旋转坐标系的推导过程
- 拉普拉斯算子从笛卡尔坐标系到圆柱坐标系下的推导过程
- 三维旋转矩阵推导
- 投影矩阵推导过程
- 右手坐标系下LookAt视图矩阵的推导
- 任意轴旋转的矩阵推导
- 绕任意轴旋转的变换矩阵的推导
- css3 矩阵 js旋转过程运算
- 传感器获取旋转矩阵R,机身坐标系和世界坐标系的映射remapR,获得旋转角度 orientationValues;
- 绕任意轴旋转的矩阵推导
- 坐标系转换之三:欧拉角、四元数、旋转矩阵、方向余弦矩阵、旋转向量、轴角表示
- 关于仿射矩阵的推导过程
- 绕任意轴旋转的矩阵推导
- 右手坐标系下LookAt视图矩阵的推导
- 绕任意轴旋转的矩阵推导
- 三维旋转矩阵推导
- 最小二乘法矩阵求导过程的推导
- 推荐系统之概率矩阵分解的详细推导过程(Probabilistic Matrix Factorization,PMF)
- 旋转坐标转换的矩阵推导