最近在看人头姿态和视线方向检测的东西,需要考虑坐标系与坐标系之间的旋转.用欧拉角表示坐标系的旋转时存在两种旋转方法,另外旋转的顺序也会对旋转结果有影响,查了一些资料总结一下结果.
  描述坐标系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容易得到:

      RX(α)=[1000cos(α)−sin(α)0sin(α)cos(α)]R_X(\alpha) = \left [\begin{matrix} 1&0&0 \\ 0&cos(\alpha)&-sin(\alpha) \\0&sin(\alpha)&cos(\alpha)\end{matrix}\right ]RX​(α)=⎣⎡​100​0cos(α)sin(α)​0−sin(α)cos(α)​⎦⎤​

      RY(β)=[cos(β)0sin(β)010−sin(β)0cos(β)]R_Y(\beta) = \left [\begin{matrix} cos(\beta)&0&sin(\beta) \\ 0&1&0 \\-sin(\beta)&0&cos(\beta)\end{matrix}\right ]RY​(β)=⎣⎡​cos(β)0−sin(β)​010​sin(β)0cos(β)​⎦⎤​

      RZ(γ)=[cos(γ)−sin(γ)0sin(γ)cos(γ)0001]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(γ)0​−sin(γ)cos(γ)0​001​⎦⎤​

      R=RZ(γ)×RY(α)×RX(α)=[cos(β)cos(γ)sin(α)sin(β)cos(γ)−cos(α)sin(γ)cos(α)sin(β)cos(γ)+sin(α)sin(γ)cos(β)sin(γ)sin(α)sin(β)sin(γ)+cos(α)cos(γ)cos(α)sin(β)sin(γ)−sin(α)cos(γ)−sin(β)sin(α)cos(γ)cos(α)cos(γ)]\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=[cos(θ)+(1−cos(θ))x2(1−cos(θ))xy−sin(θ)z(1−cos(θ))xz+sin(θ)y(1−cos(θ))xy+sin(θ)zcos(θ)+(1−cos(θ))y2(1−cos(θ))yz−sin(θ)x(1−cos(θ))xz−sin(θ)y(1−cos(θ))yz+sin(θ)xcos(θ)+(1−cos(θ))z2]\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(θ)+(1−cos(θ))x2(1−cos(θ))xy+sin(θ)z(1−cos(θ))xz−sin(θ)y​(1−cos(θ))xy−sin(θ)zcos(θ)+(1−cos(θ))y2(1−cos(θ))yz+sin(θ)x​(1−cos(θ))xz+sin(θ)y(1−cos(θ))yz−sin(θ)xcos(θ)+(1−cos(θ))z2​⎦⎤​

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

      RZ(γ)=[cos(γ)−sin(γ)0sin(γ)cos(γ)0001]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(γ)0​−sin(γ)cos(γ)0​001​⎦⎤​

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

      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(\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(β)​⎦⎤​

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

      RY(β)×RZ(γ)=[cos(β)cos(γ)−sin(γ)sin(β)cos(γ)cos(β)sin(γ)cos(γ)sin(β)sin(γ)−sin(β)0cos(β)]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(γ)0​sin(β)cos(γ)sin(β)sin(γ)cos(β)​⎦⎤​

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

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

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

      R=[cos(β)cos(γ)sin(α)sin(β)cos(γ)−cos(α)sin(γ)cos(α)sin(β)cos(γ)+sin(α)sin(γ)cos(β)sin(γ)sin(α)sin(β)sin(γ)+cos(α)cos(γ)cos(α)sin(β)sin(γ)−sin(α)cos(γ)−sin(β)sin(α)cos(γ)cos(α)cos(γ)]\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’=RZ(γ)×RY(α)×RX(α)×Ra\textbf{Ra'}=R_Z(\gamma) \times R_Y(\alpha) \times R_X(\alpha) \times\textbf{Ra}Ra’=RZ​(γ)×RY​(α)×RX​(α)×Ra

        其中:

        RX(α)=[1000cos(α)−sin(α)0sin(α)cos(α)]R_X(\alpha) = \left [\begin{matrix} 1&0&0 \\ 0&cos(\alpha)&-sin(\alpha) \\0&sin(\alpha)&cos(\alpha)\end{matrix}\right ]RX​(α)=⎣⎡​100​0cos(α)sin(α)​0−sin(α)cos(α)​⎦⎤​

        RY(β)=[cos(β)0sin(β)010−sin(β)0cos(β)]R_Y(\beta) = \left [\begin{matrix} cos(\beta)&0&sin(\beta) \\ 0&1&0 \\-sin(\beta)&0&cos(\beta)\end{matrix}\right ]RY​(β)=⎣⎡​cos(β)0−sin(β)​010​sin(β)0cos(β)​⎦⎤​

        RZ(γ)=[cos(γ)−sin(γ)0sin(γ)cos(γ)0001]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(γ)0​−sin(γ)cos(γ)0​001​⎦⎤​

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

        假设除了不动的世界坐标系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=RX(α)×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”’中的坐标.RX(α)R_X(\alpha)RX​(α)为第二次转动后的固连坐标系B”\textbf{B''}B”和第三次转动后的固连坐标系B”’\textbf{B'''}B”’之间的旋转矩阵.由于第三次旋转就是绕着B”\textbf{B''}B”的X\textbf{X}X轴转了α\alphaα,因此RX(α)R_X(\alpha)RX​(α),或者说B”\textbf{B''}B”和B”’\textbf{B'''}B”’之间的变换矩阵就是:

          RX(α)=[1000cos(α)−sin(α)0sin(α)cos(α)]R_X(\alpha) = \left [\begin{matrix} 1&0&0 \\ 0&cos(\alpha)&-sin(\alpha) \\0&sin(\alpha)&cos(\alpha)\end{matrix}\right ]RX​(α)=⎣⎡​100​0cos(α)sin(α)​0−sin(α)cos(α)​⎦⎤​

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

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

          RY(β)=[cos(β)0sin(β)010−sin(β)0cos(β)]R_Y(\beta) = \left [\begin{matrix} cos(\beta)&0&sin(\beta) \\ 0&1&0 \\-sin(\beta)&0&cos(\beta)\end{matrix}\right ]RY​(β)=⎣⎡​cos(β)0−sin(β)​010​sin(β)0cos(β)​⎦⎤​

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

          Ra0=RZ(γ)×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’=RZ(γ)×Ra1\textbf{Ra'} = R_Z(\gamma) \times \textbf{Ra1}Ra’=RZ​(γ)×Ra1,其中:

          RZ(γ)=[cos(γ)−sin(γ)0sin(γ)cos(γ)0001]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(γ)0​−sin(γ)cos(γ)0​001​⎦⎤​

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

          Ra’=RZ(γ)×Ra1=RZ(γ)×(RY(β)×Ra2)=RZ(γ)×(RY(β)×(RX(α)×Ra3))=RZ(γ)×RY(β)×RX(α)×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’=RZ(γ)×RY(α)×RX(α)×Ra3=RZ(γ)×RY(α)×RX(α)×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

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

  1. 方形物体绕中心旋转的扭力_三维旋转

    chopper:目录​zhuanlan.zhihu.com 本篇文章主要介绍三维空间下旋转的三种表示形式:四元数.矩阵和欧拉角,阐述了三种旋转表示的数学原理并且对比了它们的优缺点.目录结构: 四元数 ...

  2. 18.外部相机校准——旋转(Rotation),R是什么样子的,绕Z轴旋转的例子,齐次坐标旋转_2

    目录 旋转(rotation) R是什么样子的 绕Z轴旋转的例子 齐次坐标旋转 旋转(rotation) 现在生活变得更加丑陋,旋转(rotation).我这里有一个图,或者我想这也是来自四边复合幻灯 ...

  3. 旋转——绕原点二维旋转,绕任意点的二维旋转,三维基本旋转,绕任意轴的三维旋转

    1 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移.旋转.缩放.剪切这几种.本文以及接下来的几篇文章重点介绍一下关于旋转的变换,包括二维旋转变换. ...

  4. 编程,绘图,设置坐标轴,做出自己的坐标轴

    链接: http://blog.sina.com.cn/s/blog_6399df820100tr8x.html 编程,绘图,设置坐标轴,做出自己的坐标轴 1. axis([xmin xmax ymi ...

  5. python使用matplotlib可视化:设置坐标轴的范围、设置主次坐标轴刻度、坐标轴刻度显示样式、坐标轴刻度数颜色、小数点位数、坐标轴刻度网格线、线条类型、数据点形状标签、文本字体、颜色、大小等

    python使用matplotlib可视化:设置坐标轴的范围.设置主次坐标轴刻度.坐标轴刻度显示样式.坐标轴刻度数颜色.小数点位数.坐标轴刻度网格线.线条类型.数据点形状标签.文本字体.颜色.大小等 ...

  6. R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度、增加坐标轴刻度的粒度、更加精细地表达

    R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度.增加坐标轴刻度的粒度.更加精细地表达 目录

  7. ECharts修改坐标轴,坐标轴字体,坐标轴网格样式以及控制坐标轴是否显示

    首先要将一个图表显示在前端页面上: var myChart = echarts.init(document.getElementById('testDIV')); //初始化echarts页面显示的空 ...

  8. 怎么更改坐标轴标题access_excel2013设置图表坐标轴刻度的教程

    在EXCEL中,图表是勘察数据的最重要途径之一,图表做好了才可以更好的勘察数据,或许还有朋友不知道图表的数据轴的刻度不知道怎么设置,接下来是学习啦小编为大家带来的excel2013设置图表坐标轴刻度的 ...

  9. Python Axes3D自制坐标轴(没办法俺不知道咋移动坐标轴,但是不移动坐标轴画图太难看了)

    Python Axes3D自制坐标轴 因为很不巧用Axes3D自带的坐标轴画出来图有点丑,首先ticklabels离坐标轴有点远.其次想正负值都能显示.就在想能不能把轴往上移一下,同时拉近tickla ...

最新文章

  1. Linux根文件系统介绍
  2. java给腾讯通发消息_通过web 向rtx发送通知消息
  3. 读取Excel文件的版本
  4. [Specification by Example][ch5 Deriving scope from goals]-[读书笔记]-[4]
  5. LINUX终端可以使用reset清除所有输出
  6. 【“新智认知”杯上海大学联赛】D-CSL的字符串(贪心)
  7. LeetCode13-罗马数字转整数
  8. java实现倒计时_Java实现倒计时代码
  9. 微信小程序转换为uni-app项目
  10. 开源开放 | 一个用于文言文实体识别与关系抽取等任务的开源数据集C-CLUE(CCKS2021)...
  11. AE怎么制作流体文字效果?这波教程我真学会了
  12. linux修复引导工具,linux 修复引导工具
  13. WPF编程--地图控件GMap使用
  14. Ps Camera Raw 打开图像错位花屏原因- PC 上的独立显卡背锅
  15. 新版标准日本语初级_第六课
  16. iOS地图定位系统语言为英文时,返回中文位置信息
  17. shu_p64 n后问题
  18. 最近一周工作问题总结
  19. java中子类能否继承 重写父类的静态方法
  20. vue pc端实现 直播功能+弹幕

热门文章

  1. 作者:孙卫强,博士,上海交通大学教授、博士生导师。
  2. 《大数据》2015年第2期“专题”——我国大数据交易的主要问题及建议
  3. 蜜蜂路线(洛谷P2437题题解,Java语言描述)
  4. 【Java】Date类和Calendar类必知必会
  5. 【Java】深入剖析Java输入输出的那些细节
  6. 原来Java大数据才是真正的高富帅!
  7. 实战GraphQL+express+mysql项目完整demo
  8. activiti-explorer 启动报错 Error creating bean with name 'demoDataConfiguration'
  9. AC自动机 - 关于Fail指针
  10. Android开发之Is Library篇