首页 > 其他分享 >旋转矩阵

旋转矩阵

时间:2023-08-19 20:45:38浏览次数:25  
标签:矩阵 旋转 theta 左手 坐标系 向量

目录

旋转的表示

在三维坐标系中,有三种表达形式

  1. 旋转矩阵

    \[ R = \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix} \]

  2. 旋转角

    \[ \theta = \begin{pmatrix} \phi & \theta & \psi \end{pmatrix} \]

    旋转角又称欧拉角,一般情况下旋转角指的是坐标系绕\(x\)轴旋转后,再绕\(y\)轴旋转后,再绕\(z\)轴旋转分别的角度
  3. 旋转向量

    \[ r = \begin{pmatrix}r_x & r_y & r_z\end{pmatrix} \\ \theta = norm(r)\]

    刚体绕旋转轴旋转,\(r\)表示的是旋转轴的方向,\(r\)的长度\(norm(r)\)表示刚体绕轴旋转的角度

旋转向量与旋转矩阵之间的变换

旋转向量与旋转矩阵之间的变换又称为罗德里格斯变换(Rodrigues)

旋转向量变成旋转矩阵

\[ \theta \larr norm(r) \\ r \larr r/\theta \]

\[ R = \cos{\theta{I}} + (1-\cos{\theta})rr^T + \sin{\theta} \begin{bmatrix} 0 & -r_z & r_y \\ r_z & 0 & -r_x \\ -r_y & r_x & 0 \end{bmatrix} \]

旋转矩阵变为旋转向量

\[ \sin{\theta}\begin{bmatrix} 0 & -r_z & r_y \\ r_z & 0 & -r_x \\ -r_y & r_x & 0 \end{bmatrix} = \frac{R-R^T}{2} \]

\[ \theta = \arccos(\frac{tr(R-I)}{2}) \]

左右手坐标系确定及其旋转正向

这两个问题很容易弄混淆,要确定旋转正向必须先确定是左手坐标系还是右手坐标系。

  1. 判定坐标系:
    1. 使用左手,大拇指指向Z轴正向,其余四指由X向Y握起。如果可以达成,则为左手坐标系,否则为右手坐标系。
    2. 伸出左手,食指朝上,大拇指向右,中指向前,如果X,Y,Z三轴分别与大拇指,食指,中指同向,则为左手坐标系。否则为右手坐标。
    3. 左手坐标系与右手坐标系的区别仅在:Z轴方向相反。相同点:X向右,Y向上
  2. 有了坐标系,判断旋转正向:
    1. 从轴的正方向看向原点,左手坐标系下 :顺序时针方向即是旋转正向,右手坐标系下:逆时针方向即是旋转正向
    2. 左手坐标,绕Y轴旋转:左手握住Y轴,四指弯曲的方向就是旋转正向,这里就是由Z轴指向X轴。
      若绕Z轴旋转:左手握住Z轴,四指弯曲的方向就是旋转方向,这里是由X轴指向Y轴。

内旋是右乘 外旋是左乘吗

标签:矩阵,旋转,theta,左手,坐标系,向量
From: https://www.cnblogs.com/champrin/p/17643085.html

相关文章

  • 平面或空间中任意点的旋转
    平面或空间中任意点的旋转自己琢磨出来的。若有错误请指出。谢谢!1.旋转2D假设平面上有一个点\(P(x,y)\),旋转任意角度\(\beta\),求旋转后的点\(P'(x',y')\)。设平面坐标系上有一个半径为\(r\)的圆,圆心位于原点\(O\)。圆与\(x\)轴正坐标的交点为\(P_0(x_0,y_0)\)。\[P_0=......
  • 骚操作:使用RxJava实现ImageView的拖动、旋转和缩放
    本文介绍一种使用Rxjava实现图片交互操作的方法。支持单指拖动,双指旋转缩放,效果如下:自定义View首先自定义TrsImageView继承ImageView,设置ScaleType为Matrix,我们使用矩阵计算最终的translate,rotate和scale。publicclassTrsImageViewextendsImageView{publicTrsImageVi......
  • 矩阵
    一、矩阵的定义对于\(m×n\)个数的矩阵\(a_{i,j},i=[1,m],j=[1,n]\),有\(m\)行\(n\)列,称为\(m×n\)矩阵,这个矩阵排列如下:\[\left[\begin{matrix}a_{1,1}&a_{1,2}&⋯&a_{1,n}\\a_{2,1}&a_{2,2}&⋯&a_{2,n}\\⋮&⋮&⋱&⋮......
  • 小程序中实现图片旋转后保存
    嫌麻烦的可以直接点击小程序代码片段体验,下面是代码:<imagesrc="https://qcloudimg.tencent-cloud.cn/raw/7ff4215737d7877346c0ec6ea1514d94.jpg"mode="widthFix"style="width:100vw;"/><pickermode="selector"range=&qu......
  • 73.矩阵置零
    73.矩阵置零思路:思路一:用O(m+n)O(m+n)O(m+n)额外空间两遍扫matrix,第一遍用集合记录哪些行,哪些列有0;第二遍置0思路二:用O(1)O(1)O(1)空间关键思想:用matrix第一行和第一列记录该行该列是否有0,作为标志位但是对于第一行,和第一列要设置一个标志位,为了防止自己这一......
  • 【8月摸鱼计划】cw32f0有浮点计算单元吗?怎么使用矩阵求逆?
    cw32f0是一款基于中国开源项目的芯片,它并不具备浮点计算单元。因此,无法直接进行浮点数运算。然而,您仍然可以通过一些方法来近似实现浮点数的计算。一种常见的方法是使用定点数表示浮点数,并通过手动实现相应的运算算法来达到类似的效果。这需要根据具体的应用场景设计相应的固定点......
  • 图论之存图-----邻接矩阵
    跟着思路敲了一遍,感觉清晰多了,但是还得多复习。就是利用了深度搜索,很奇妙。点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;intw[N][N];intvis[N];intn,m;inta,b,c;voiddfs(intu){ vis[u]=true; if(vis[u]){ for(inti=1;i<=......
  • 矩阵最值
    题目描述我们有一个N  行  M列的矩阵,现在小Q有K 个问题,每次询问一个以(X1,Y1)为左上角, (X2,Y2)为右下角的子矩阵的最大值。输入格式第一行三个整数N,M,K。接下来N行,每行有 M个整数,设Ai,j 为矩阵i行j 列的数字。接下来k行,每行4个整数  ......
  • hdu 4291(矩阵快速幂+循环节)
    AShortproblemTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):2487    AcceptedSubmission(s):876ProblemDescriptionAccordingtoaresearch,VIMuserstendtohaveshorterfing......
  • CUDA之矩阵转置(全局内存、共享内存)
    使用全局内存完整代码链接A合并访问、B非合并访问#ifdefUSE_DPtypedefdoublereal;#elsetypedeffloatreal;#endif__global__voidtranspose1(constreal*A,real*B,constintN){constintnx=blockIdx.x*blockDim.x+threadIdx.x;const......