以任意一点为旋转中心的二维旋转矩阵推导

1. 2D中绕原点旋转

设基向量p,q和r分别是朝向+x,+y和+z方向的单位向量

旋转角度为θ,基向量p,q绕原点旋转,得到新的基向量p`和q`

2. 3d中绕坐标轴旋转

01. 绕x轴旋转基向量q和r旋转θ,得到新的基向量q`和r`

即旋转矩阵Rx(θ)为:

02. 绕y轴旋转,基向量p和r旋转θ,得到新的基向量p`和r`

即旋转矩阵Ry(θ)为:

03. 绕z轴旋转基向量p和q旋转θ,得到新的基向量p`囷q`


即旋转矩阵Rz(θ)为:


这里不考虑平移,所以是过原点的任意轴

任意轴用单位向量n表示,绕n旋转θ角度的矩阵表示为R(n,θ)v`是向量v绕轴n旋转後的向量

我们的目标是用v,n和θ来表示v`,具体步骤如下:

将v分解为平行于n的分向量v||和垂直于n的分向量v⊥v`⊥是v`垂直于n的分向量。

01.根据向量投影公式有

02.根据v||算出v⊥,w是v⊥与n叉剩的结果

05.现在已经得到了v`与v,n和θ的关系公式,用它来计算变换后的基向量并构造矩阵,基向量p`为

06.其余基向量類推这里纠正上式中列向量的写法

问题:物体在三维空间中旋转两佽(状态1状态2),将这两次旋转平均分割成200份使其自动的连续从状态1旋转到状态2,计算这个连续的旋转矩阵

  1. 首先,据两次矩阵可獲得状态1到状态2的旋转矩阵A;
  2. 根据旋转矩阵A计算出欧拉角,alpha, beta, gamma(三个坐标轴);
  3. 将欧拉角平均200份根据欧拉角算出连续旋转矩阵。

由于欧拉角本身有一些缺点再加上欧拉角平分200后角度太小,做正弦、余弦变换后数值精度不够从状态1连续旋转后一般达不到状态2。

第二种方法根据旋转矩阵,计算(Rotate Vector)

首先据两次矩阵,可获得状态1到状态2的旋转矩阵A;

根据旋转矩阵A计算出旋转向量;

将旋转向量的旋转角平分200计算获得连续旋转矩阵。

通过旋转向量获得的连续矩阵使得物体从状态1可达到一个比较好的状态2(比较了一下变换后的矩阵,旋转矩陣还是有一些差距)

发布了10 篇原创文章 · 获赞 7 · 访问量 5万+

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
// 【注意】angle 逆时针为正,顺时针为负
 
 
1. 首先极坐标系下,一个点绕原点( 0, 0)旋转一个角度後的坐标点

【注意】旋转 n 度:n 定义为 逆时针为正顺时针为负
 
 

 

二、旋转变换(一)旋转矩阵

 

 

 

3. 绕任意点的二维旋转

 

 



5. 绕任意轴的三维旋转

 

【注】三种绕 坐标轴 旋转的情况,属于特殊的二维旋转比如绕 Z 轴旋转,相当于在与 XOY 平面上绕 原点 做二维旋转

 

方法二:使用 旋转矩 阵求解

 
 
 


发布了89 篇原创文章 · 获赞 53 · 访问量 9万+

我要回帖

更多关于 二维旋转矩阵推导 的文章

 

随机推荐