绕固定坐标轴旋转与绕自身坐标轴旋转一致性证明

  最近在看人头姿态和视线方向检测的东西,需要考虑坐标系与坐标系之间的旋转.用欧拉角表示坐标系的旋转时存在两种旋转方法,另外旋转的顺序也会对旋转结果有影响,查了一些资料总结一下结果.
  描述坐标系 B \textbf{B} B相对于坐标系 A \textbf{A} A的姿态有两种方式:第一种是绕固定坐标轴旋转,第二种是绕自身坐标轴旋转.假设坐标系 A \textbf{A} A为世界坐标系(不动),坐标系 B \textbf{B} B为旋转坐标系,两个坐标系在开始时重合,则:

  • 固定坐标轴旋转:

    先将 B \textbf{B} B A \textbf{A} A X \textbf{X} X轴旋转 α \alpha α,再将 B \textbf{B} B A \textbf{A} A Y \textbf{Y} Y轴旋转 β \beta β,最后将 B \textbf{B} B A \textbf{A} A Z \textbf{Z} Z轴旋转 γ \gamma γ.旋转过程中坐标系 A \textbf{A} A是不动的,其三个坐标轴也是固定的,因此称这种旋转方法为绕固定轴旋转.注意这里的旋转方向为先 X \textbf{X} X轴,再 Y \textbf{Y} Y轴,最后 Z \textbf{Z} Z轴.

  • 自身坐标轴旋转:

    先将 B \textbf{B} B B \textbf{B} B Z \textbf{Z} Z轴旋转 γ \gamma γ,再将 B \textbf{B} B B \textbf{B} B Y \textbf{Y} Y轴旋转 β \beta β,最后将 B \textbf{B} B B \textbf{B} B X \textbf{X} X轴旋转 α \alpha α.旋转过程中坐标系 B \textbf{B} B是变化的,其三个坐标轴也是变化的,称这种旋转方法为绕固自身旋转.注意这里的旋转方向为先 Z \textbf{Z} Z轴,再 Y \textbf{Y} Y轴,最后 X \textbf{X} X轴.和第一种旋转方式的旋转顺序不同,原因是后面要给出的结论.

  • 结论:

    以绕固定轴方式,先 X \textbf{X} X轴转 α \alpha α,再 Y \textbf{Y} Y轴转 β \beta β,最后 Z \textbf{Z} Z轴转 γ \gamma γ的旋转和以绕自身轴方式,先 Z \textbf{Z} Z轴转 γ \gamma γ,再 Y \textbf{Y} Y轴转 β \beta β,最后 X \textbf{X} X轴转 α \alpha α的旋转是等效的,下面给出"僵硬"的数学证明.

  • 证明:

    我们知道,坐标轴的旋转可以用旋转矩阵来表示,为了证明上述两种旋转方法是等效的,只需要证明两种旋转方法对应的旋转矩阵是相同的.

    • 对于绕固定轴方式,先 X \textbf{X} X轴转 α \alpha α,再 Y \textbf{Y} Y轴转 β \beta β,最后 Z \textbf{Z} Z轴转 γ \gamma γ的旋转,其旋转矩阵 R \textbf{R} R容易得到:

      R X ( α ) = [ 1 0 0 0 c o s ( α ) − s i n ( α ) 0 s i n ( α ) c o s ( α ) ] R_X(\alpha) = \left [\begin{matrix} 1&0&0 \\ 0&cos(\alpha)&-sin(\alpha) \\0&sin(\alpha)&cos(\alpha)\end{matrix}\right ] RX(α)=1000cos(α)sin(α)0sin(α)cos(α)

      R Y ( β ) = [ c o s ( β ) 0 s i n ( β ) 0 1 0 − s i n ( β ) 0 c o s ( β ) ] R_Y(\beta) = \left [\begin{matrix} cos(\beta)&0&sin(\beta) \\ 0&1&0 \\-sin(\beta)&0&cos(\beta)\end{matrix}\right ] RY(β)=cos(β)0sin(β)010sin(β)0cos(β)

      R Z ( γ ) = [ c o s ( γ ) − s i n ( γ ) 0 s i n ( γ ) c o s ( γ ) 0 0 0 1 ] R_Z(\gamma) = \left [\begin{matrix} cos(\gamma)&-sin(\gamma)&0 \\ sin(\gamma)&cos(\gamma)&0 \\0&0&1\end{matrix}\right ] RZ(γ)=cos(γ)sin(γ)0sin(γ)cos(γ)0001

      R = R Z ( γ ) × R Y ( α ) × R X ( α ) = [ c o s ( β ) c o s ( γ ) s i n ( α ) s i n ( β ) c o s ( γ ) − c o s ( α ) s i n ( γ ) c o s ( α ) s i n ( β ) c o s ( γ ) + s i n ( α ) s i n ( γ ) c o s ( β ) s i n ( γ ) s i n ( α ) s i n ( β ) s i n ( γ ) + c o s ( α ) c o s ( γ ) c o s ( α ) s i n ( β ) s i n ( γ ) − s i n ( α ) c o s ( γ ) − s i n ( β ) s i n ( α ) c o s ( γ ) c o s ( α ) c o s ( γ ) ] \textbf{R} = R_Z(\gamma) \times R_Y(\alpha) \times R_X(\alpha) = \\ \\ \left [\begin{matrix} cos(\beta)cos(\gamma)&sin(\alpha)sin(\beta)cos(\gamma)-cos(\alpha)sin(\gamma)&cos(\alpha)sin(\beta)cos(\gamma)+sin(\alpha)sin(\gamma)\\cos(\beta)sin(\gamma)&sin(\alpha)sin(\beta)sin(\gamma)+cos(\alpha)cos(\gamma)&cos(\alpha)sin(\beta)sin(\gamma)-sin(\alpha)cos(\gamma)\\-sin(\beta)&sin(\alpha)cos(\gamma)&cos(\alpha)cos(\gamma)\end{matrix}\right ] R=RZ(γ)×RY(α)×RX(α)=cos(β)cos(γ)cos(β)sin(γ)sin(β)sin(α)sin(β)cos(γ)cos(α)sin(γ)sin(α)sin(β)sin(γ)+cos(α)cos(γ)sin(α)cos(γ)cos(α)sin(β)cos(γ)+sin(α)sin(γ)cos(α)sin(β)sin(γ)sin(α)cos(γ)cos(α)cos(γ)

    • 对于绕自身轴方式,先 Z \textbf{Z} Z轴转 γ \gamma γ,再 Y \textbf{Y} Y轴转 β \beta β,最后 X \textbf{X} X轴转 α \alpha α的旋转,其旋转矩阵 R \textbf{R} R.首先给出坐标系绕任意以单位向量表示方向的定轴 ( x , y , z ) (x,y,z) (x,y,z)旋转 θ \theta θ的旋转矩阵为:

      r = [ c o s ( θ ) + ( 1 − c o s ( θ ) ) x 2 ( 1 − c o s ( θ ) ) x y − s i n ( θ ) z ( 1 − c o s ( θ ) ) x z + s i n ( θ ) y ( 1 − c o s ( θ ) ) x y + s i n ( θ ) z c o s ( θ ) + ( 1 − c o s ( θ ) ) y 2 ( 1 − c o s ( θ ) ) y z − s i n ( θ ) x ( 1 − c o s ( θ ) ) x z − s i n ( θ ) y ( 1 − c o s ( θ ) ) y z + s i n ( θ ) x c o s ( θ ) + ( 1 − c o s ( θ ) ) z 2 ] \textbf{r} = \left [\begin{matrix} cos(\theta)+(1-cos(\theta))x^2&(1-cos(\theta))xy-sin(\theta)z&(1-cos(\theta))xz+sin(\theta)y\\(1-cos(\theta))xy+sin(\theta)z&cos(\theta)+(1-cos(\theta))y^2&(1-cos(\theta))yz-sin(\theta)x\\(1-cos(\theta))xz-sin(\theta)y&(1-cos(\theta))yz+sin(\theta)x&cos(\theta)+(1-cos(\theta))z^2\end{matrix}\right ] r=cos(θ)+(1cos(θ))x2(1cos(θ))xy+sin(θ)z(1cos(θ))xzsin(θ)y(1cos(θ))xysin(θ)zcos(θ)+(1cos(θ))y2(1cos(θ))yz+sin(θ)x(1cos(θ))xz+sin(θ)y(1cos(θ))yzsin(θ)xcos(θ)+(1cos(θ))z2

      则先 Z \textbf{Z} Z轴转 γ \gamma γ对应的旋转矩阵 R Z ( γ ) R_Z(\gamma) RZ(γ):

      R Z ( γ ) = [ c o s ( γ ) − s i n ( γ ) 0 s i n ( γ ) c o s ( γ ) 0 0 0 1 ] R_Z(\gamma) = \left [\begin{matrix} cos(\gamma)&-sin(\gamma)&0 \\ sin(\gamma)&cos(\gamma)&0 \\0&0&1\end{matrix}\right ] RZ(γ)=cos(γ)sin(γ)0sin(γ)cos(γ)0001

      旋转后的 Y \textbf{Y} Y轴由 ( 0 , 1 , 0 ) (0,1,0) (0,1,0)变成了 ( − s i n ( γ ) , c o s ( γ ) , 0 ) (-sin(\gamma),cos(\gamma),0) (sin(γ),cos(γ),0),再按照绕任意轴的公式计算得到绕此时的 Y \textbf{Y} Y轴旋转 β \beta β对应的旋转矩阵为:

      R Y ( β ) = [ c o s ( β ) − s i n 2 ( γ ) ( c o s ( β ) − 1 ) c o s ( γ ) s i n ( γ ) ( c o s ( β ) − 1 ) s i n ( β ) c o s ( γ ) c o s ( γ ) s i n ( γ ) ( c o s ( β ) − 1 ) c o s ( β ) − c o s 2 ( γ ) ( c o s ( β ) − 1 ) s i n ( β ) s i n ( γ ) − s i n ( β ) c o s ( γ ) − s i n ( β ) s i n ( γ ) c o s ( β ) ] R_Y(\beta) = \left [\begin{matrix} cos(\beta)-sin^2(\gamma)(cos(\beta)-1)&cos(\gamma)sin(\gamma)(cos(\beta)-1)&sin(\beta)cos(\gamma) \\ cos(\gamma)sin(\gamma)(cos(\beta)-1)&cos(\beta)-cos^2(\gamma)(cos(\beta)-1)&sin(\beta)sin(\gamma) \\-sin(\beta)cos(\gamma)&-sin(\beta)sin(\gamma)&cos(\beta)\end{matrix}\right ] RY(β)=cos(β)sin2(γ)(cos(β)1)cos(γ)sin(γ)(cos(β)1)sin(β)cos(γ)cos(γ)sin(γ)(cos(β)1)cos(β)cos2(γ)(cos(β)1)sin(β)sin(γ)sin(β)cos(γ)sin(β)sin(γ)cos(β)

      则两步旋转后的旋转矩阵为 R Y ( β ) × R Z ( γ ) R_Y(\beta)\times R_Z(\gamma) RY(β)×RZ(γ):

      R Y ( β ) × R Z ( γ ) = [ c o s ( β ) c o s ( γ ) − s i n ( γ ) s i n ( β ) c o s ( γ ) c o s ( β ) s i n ( γ ) c o s ( γ ) s i n ( β ) s i n ( γ ) − s i n ( β ) 0 c o s ( β ) ] R_Y(\beta)\times R_Z(\gamma)=\left[\begin{matrix}cos(\beta)cos(\gamma)&-sin(\gamma)&sin(\beta)cos(\gamma)\\cos(\beta)sin(\gamma)&cos(\gamma)&sin(\beta)sin(\gamma)\\-sin(\beta)&0&cos(\beta)\end{matrix}\right] RY(β)×RZ(γ)=cos(β)cos(γ)cos(β)sin(γ)sin(β)sin(γ)cos(γ)0sin(β)cos(γ)sin(β)sin(γ)cos(β)

      旋转后的 X \textbf{X} X轴由 ( 1 , 0 , 0 ) (1,0,0) (1,0,0)变成了 ( c o s ( β ) c o s ( γ ) , − s i n ( γ ) , s i n ( β ) c o s ( γ ) ) (cos(\beta)cos(\gamma),-sin(\gamma),sin(\beta)cos(\gamma)) (cos(β)cos(γ),sin(γ),sin(β)cos(γ)),再按照绕任意轴的公式计算得到绕此时的 X \textbf{X} X轴旋转 α \alpha α对应的旋转矩阵为 R X ( α ) R_X(\alpha) RX(α):

      这个矩阵实在太长了我不想写了,反正就是按照上面的任意轴公式,把 x = c o s ( β ) c o s ( γ ) , y = − s i n ( γ ) , z = s i n ( β ) c o s ( γ ) x=cos(\beta)cos(\gamma),y=-sin(\gamma),z=sin(\beta)cos(\gamma) x=cos(β)cos(γ),y=sin(γ),z=sin(β)cos(γ) θ = γ \theta=\gamma θ=γ往里一代就行了.

      最后总的旋转矩阵 R = R X ( α ) × R Y ( β ) × R Z ( γ ) \textbf{R} = R_X(\alpha)\times R_Y(\beta)\times R_Z(\gamma) R=RX(α)×RY(β)×RZ(γ) ,把各部的结果代进去一算,就得到了最终结果:

      R = [ c o s ( β ) c o s ( γ ) s i n ( α ) s i n ( β ) c o s ( γ ) − c o s ( α ) s i n ( γ ) c o s ( α ) s i n ( β ) c o s ( γ ) + s i n ( α ) s i n ( γ ) c o s ( β ) s i n ( γ ) s i n ( α ) s i n ( β ) s i n ( γ ) + c o s ( α ) c o s ( γ ) c o s ( α ) s i n ( β ) s i n ( γ ) − s i n ( α ) c o s ( γ ) − s i n ( β ) s i n ( α ) c o s ( γ ) c o s ( α ) c o s ( γ ) ] \textbf{R} = \left [\begin{matrix} cos(\beta)cos(\gamma)&sin(\alpha)sin(\beta)cos(\gamma)-cos(\alpha)sin(\gamma)&cos(\alpha)sin(\beta)cos(\gamma)+sin(\alpha)sin(\gamma)\\cos(\beta)sin(\gamma)&sin(\alpha)sin(\beta)sin(\gamma)+cos(\alpha)cos(\gamma)&cos(\alpha)sin(\beta)sin(\gamma)-sin(\alpha)cos(\gamma)\\-sin(\beta)&sin(\alpha)cos(\gamma)&cos(\alpha)cos(\gamma)\end{matrix}\right ] R=cos(β)cos(γ)cos(β)sin(γ)sin(β)sin(α)sin(β)cos(γ)cos(α)sin(γ)sin(α)sin(β)sin(γ)+cos(α)cos(γ)sin(α)cos(γ)cos(α)sin(β)cos(γ)+sin(α)sin(γ)cos(α)sin(β)sin(γ)sin(α)cos(γ)cos(α)cos(γ)

      和第一种旋转方法得到的结果相同.于是证明了前面给出的结论.之所以说这是一种很"僵硬"的证明办法,是因为整个过程是用matlab强行代公式计算出来的,中间结果可能看起来很啰嗦式子很长,但是你把他们都乘起来,就能化简出相同的结果.实际上应该有更优雅的立体几何投影证明方法,但是空间想象能力实在太差,想不出来.如果有清楚的朋友请指点一下.

  • 经过和泡儿鱼的讨论,想出了比较简洁的证明方法,写在下面:

    • 证明2:

      旋转矩阵可以用来表示坐标系和坐标系之间旋转的变换关系,也可以用来表示同一个坐标系下坐标旋转前后的变换关系,从后者的角度出发可以得到一个比较简洁又清晰的证明方法.

      我们的任务是证明:以绕固定轴方式,先绕 X \textbf{X} X轴转 α \alpha α,再绕 Y \textbf{Y} Y轴转 β \beta β,最后绕 Z \textbf{Z} Z轴转 γ \gamma γ的旋转和以绕自身轴方式,先绕 Z \textbf{Z} Z轴转 γ \gamma γ,再绕 Y \textbf{Y} Y轴转 β \beta β,最后绕 X \textbf{X} X轴转 α \alpha α的旋转是等效的.在上述僵硬的证明方法中,我们通过计算证明了两种方式下坐标系前后的变换矩阵是相同的.下面的方法中,我们证明A坐标系中有一个向量,按照这两种方式去旋转,旋转后它们在原A坐标系下转到了同一个位置,即证明了上述结论.

      假设有一个固定的世界坐标系 A \textbf{A} A,其中有一个向量 a \textbf{a} a,它在 A \textbf{A} A中的坐标为 Ra \textbf{Ra} Ra.

      • 对于第一种方式的变换:

        向量 a \textbf{a} a先绕 A \textbf{A} A X \textbf{X} X轴转 α \alpha α,再绕 A \textbf{A} A Y \textbf{Y} Y轴转 β \beta β,最后绕 A \textbf{A} A Z \textbf{Z} Z轴转​ γ \gamma γ,则三步旋转过后它在坐标系 A \textbf{A} A中的坐标:

        Ra’ = R Z ( γ ) × R Y ( α ) × R X ( α ) × Ra \textbf{Ra'}=R_Z(\gamma) \times R_Y(\alpha) \times R_X(\alpha) \times\textbf{Ra} Ra’=RZ(γ)×RY(α)×RX(α)×Ra

        其中:

        R X ( α ) = [ 1 0 0 0 c o s ( α ) − s i n ( α ) 0 s i n ( α ) c o s ( α ) ] R_X(\alpha) = \left [\begin{matrix} 1&0&0 \\ 0&cos(\alpha)&-sin(\alpha) \\0&sin(\alpha)&cos(\alpha)\end{matrix}\right ] RX(α)=1000cos(α)sin(α)0sin(α)cos(α)

        R Y ( β ) = [ c o s ( β ) 0 s i n ( β ) 0 1 0 − s i n ( β ) 0 c o s ( β ) ] R_Y(\beta) = \left [\begin{matrix} cos(\beta)&0&sin(\beta) \\ 0&1&0 \\-sin(\beta)&0&cos(\beta)\end{matrix}\right ] RY(β)=cos(β)0sin(β)010sin(β)0cos(β)

        R Z ( γ ) = [ c o s ( γ ) − s i n ( γ ) 0 s i n ( γ ) c o s ( γ ) 0 0 0 1 ] R_Z(\gamma) = \left [\begin{matrix} cos(\gamma)&-sin(\gamma)&0 \\ sin(\gamma)&cos(\gamma)&0 \\0&0&1\end{matrix}\right ] RZ(γ)=cos(γ)sin(γ)0sin(γ)cos(γ)0001

      • 对于第二种方式的变换:

        假设除了不动的世界坐标系 A \textbf{A} A以外,还有一个和向量 a \textbf{a} a固连在一起的向量坐标系 B \textbf{B} B.固连的向量坐标系和向量 a \textbf{a} a是固连的不会产生相对运动,即向量 a \textbf{a} a怎么转固连坐标系 B \textbf{B} B就怎么转.那么显然,任何转动后,向量 a \textbf{a} a在固连坐标系 B \textbf{B} B下的坐标都是不变的,且始终等于未发生任何转动时向量 a \textbf{a} a在世界坐标系 A \textbf{A} A下的坐标 Ra \textbf{Ra} Ra.

        第二种方式的变换为:向量 a \textbf{a} a先绕 B \textbf{B} B Z \textbf{Z} Z轴转 γ \gamma γ,再绕 B \textbf{B} B Y \textbf{Y} Y轴转 β \beta β,最后绕 B \textbf{B} B X \textbf{X} X轴转 α \alpha α,将转动步骤倒过来叙述更方便

        • 对于第三步转动,即向量 a \textbf{a} a绕第二次转动后的固连坐标系 B” \textbf{B''} B” X \textbf{X} X轴转 α \alpha α,有:

          Ra2 = R X ( α ) × Ra3 \textbf{Ra2} = R_X(\alpha) \times \textbf{Ra3} Ra2=RX(α)×Ra3

          其中 Ra2 \textbf{Ra2} Ra2三次转动后向量 a \textbf{a} a第二次转动后的固连坐标系 B” \textbf{B''} B”中的坐标, Ra3 \textbf{Ra3} Ra3三次转动后向量 a \textbf{a} a第三次转动后的固连坐标系 B”’ \textbf{B'''} B”’中的坐标. R X ( α ) R_X(\alpha) RX(α)第二次转动后的固连坐标系 B” \textbf{B''} B”和第三次转动后的固连坐标系 B”’ \textbf{B'''} B”’之间的旋转矩阵.由于第三次旋转就是绕着 B” \textbf{B''} B” X \textbf{X} X轴转了 α \alpha α,因此 R X ( α ) R_X(\alpha) RX(α),或者说 B” \textbf{B''} B” B”’ \textbf{B'''} B”’之间的变换矩阵就是:

          R X ( α ) = [ 1 0 0 0 c o s ( α ) − s i n ( α ) 0 s i n ( α ) c o s ( α ) ] R_X(\alpha) = \left [\begin{matrix} 1&0&0 \\ 0&cos(\alpha)&-sin(\alpha) \\0&sin(\alpha)&cos(\alpha)\end{matrix}\right ] RX(α)=1000cos(α)sin(α)0sin(α)cos(α)

        • 同理对于第二步转动,有:

          Ra1 = R Y ( β ) × Ra2 \textbf{Ra1} = R_Y(\beta) \times \textbf{Ra2} Ra1=RY(β)×Ra2 ,各变量的意义类似第三步不再赘述.

          R Y ( β ) = [ c o s ( β ) 0 s i n ( β ) 0 1 0 − s i n ( β ) 0 c o s ( β ) ] R_Y(\beta) = \left [\begin{matrix} cos(\beta)&0&sin(\beta) \\ 0&1&0 \\-sin(\beta)&0&cos(\beta)\end{matrix}\right ] RY(β)=cos(β)0sin(β)010sin(β)0cos(β)

        • 同理对于第一步转动有:

          Ra0 = R Z ( γ ) × Ra1 \textbf{Ra0} = R_Z(\gamma) \times \textbf{Ra1} Ra0=RZ(γ)×Ra1,其中 Ra0 \textbf{Ra0} Ra0为三次转动后向量 a \textbf{a} a在第0次转动后的固连坐标系 B” \textbf{B''} B”中的坐标,也就是在世界坐标系中的坐标 Ra’ \textbf{Ra'} Ra’,即:

          Ra’ = R Z ( γ ) × Ra1 \textbf{Ra'} = R_Z(\gamma) \times \textbf{Ra1} Ra’=RZ(γ)×Ra1,其中:

          R Z ( γ ) = [ c o s ( γ ) − s i n ( γ ) 0 s i n ( γ ) c o s ( γ ) 0 0 0 1 ] R_Z(\gamma) = \left [\begin{matrix} cos(\gamma)&-sin(\gamma)&0 \\ sin(\gamma)&cos(\gamma)&0 \\0&0&1\end{matrix}\right ] RZ(γ)=cos(γ)sin(γ)0sin(γ)cos(γ)0001

        • 把三步转动穿起来看,有:

          Ra’ = R Z ( γ ) × Ra1 = R Z ( γ ) × ( R Y ( β ) × Ra2 ) = R Z ( γ ) × ( R Y ( β ) × ( R X ( α ) × Ra3 ) ) = R Z ( γ ) × R Y ( β ) × R X ( α ) × Ra3 \textbf{Ra'} = R_Z(\gamma) \times \textbf{Ra1} = R_Z(\gamma) \times(R_Y(\beta) \times \textbf{Ra2}) = R_Z(\gamma) \times(R_Y(\beta) \times (R_X(\alpha) \times \textbf{Ra3}))=\\R_Z(\gamma) \times R_Y(\beta) \times R_X(\alpha) \times \textbf{Ra3} Ra’=RZ(γ)×Ra1=RZ(γ)×(RY(β)×Ra2)=RZ(γ)×(RY(β)×(RX(α)×Ra3))=RZ(γ)×RY(β)×RX(α)×Ra3

          又因为 Ra3 \textbf{Ra3} Ra3是第三次转动后向量 a \textbf{a} a在第三次转动后的固连坐标系 B”’ \textbf{B'''} B”’的坐标,由于相对位置不变,这个值就等于未发生转动时向量 a \textbf{a} a在世界坐标系 A \textbf{A} A中的坐标,即:

          Ra3 = Ra \textbf{Ra3} = \textbf{Ra} Ra3=Ra,则有:

          Ra’ = R Z ( γ ) × R Y ( α ) × R X ( α ) × Ra3 = R Z ( γ ) × R Y ( α ) × R X ( α ) × Ra \textbf{Ra'}=R_Z(\gamma) \times R_Y(\alpha) \times R_X(\alpha) \times\textbf{Ra3} = R_Z(\gamma) \times R_Y(\alpha) \times R_X(\alpha) \times\textbf{Ra} Ra’=RZ(γ)×RY(α)×RX(α)×Ra3=RZ(γ)×RY(α)×RX(α)×Ra与第一种方式的变换结果相同.即同一个向量经过两种方式的变换后在世界坐标系中的坐标相同,也证明了这两种变换是等效的.

    总结一下就是,如果是坐标系或者向量绕着固定的坐标轴旋转,相当于每转一次产生一个旋转矩阵,然后按旋转顺序将这些旋转矩阵左乘起来.如果是坐标系或者向量绕着自身的坐标轴旋转,相当于每转一次产生一个旋转矩阵,然后按旋转顺序将这些矩阵右乘起来.要注意后者的每一步旋转产生的旋转矩阵,不要以世界坐标系为基准去算,而是以每次旋转前的坐标系去算,也就是每次旋转矩阵只描述当前这次旋转前后的坐标系之间的转换矩阵!!!

    费了半天劲希望把事情说明白了,我其实很担心哪个地方有笔误没写清楚,如果有的话请帮忙指出来.谢谢!

    网上也找到了其他类似的证明方法,看起来似乎更简洁也更容易理解,贴出来供参考:

    blog.miskcoo.com/2016/12/rotation-in-3d-space

  • 28
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值