-这是一个旋转矩阵,我回答。右手,z向前穿过鼻子,x穿过左耳。我们刚毕业的年轻同事点点头。
-哦,不!你打开维基百科了吗?你不是吗?我从办公桌上绝望地回答。
偶尔会有刚毕业的工程师(或暑期实习生)问我这个问题。几乎总是在屏幕上打开维基百科页面,我认为这很可怕(或者更糟糕的是,一些“学习OpenGL”教程)。
我偷偷地坐在那个人旁边的椅子上。这需要几分钟的时间,我们要做一些比学习更难的事情:我们要忘却学习。
有趣的是,我没有得到任何问题,或者只是很短的问题,关于欧拉天使,罗德里格斯旋转,实际上只有一个关于四元数的反复出现的问题。但我经常会被问到关于旋转矩阵的问题。我认为这有点奇怪,因为与许多其他旋转表示法相比,旋转矩阵非常简单。我认为一个很大的原因是维基百科的页面。它看起来像这样:
\[r_x(\theta)=\Begin{bMatrix}1&;0&;0\\0&;\cos\theta&;-\sin\theta\\0&;\sin\theta&;\cos\theta\end{bMatrix}\]\[R_y(\theta)=\Begin{bMatrix}\cos\theta&;0&;\sin\theta\\。\cos\theta\end{bMatrix}\]\[R_z(\theta)=\Begin{bMatrix}\cos\theta&;-\sin\theta&;0\sin\theta&;\cos\theta&;0\\0&;0&;1\end{bMatrix}\]\[R=\Begin{bMatrix}\cos\alpha\cos\beta&;\cos\alpha\sin\beta\cos\Gamma+\sin\alpha\sin\\sin\alpha\cos\beta&;\sin\alpha\sin\beta\sin\Gamma+\cos\alpha\cos\Gamma&;\sin\alpha\sin\beta\cos\Gamma-\cos\alpha\sin\sin\beta&;\cos\beta\sin\Gamma&;\cos\beta\cos\Gamma\\。
它谈到了旋转。绕不同轴旋转及其与欧拉角的关系。例如,在处理头部姿势时,这可能会有点令人困惑。当然,您可以考虑旋转矩阵,就好像头部围绕不同的轴以不同的顺序旋转,但这变得有点难以解释:
\[\BEGIN{bMatrix}-0.9987820&;0.0348782&;-0.0348995\\0.0283128&;0.9844193&;0.1735424\\0.0404086&;0.1723429&;-0.9842078\end{bMatrix}\]
然后我们得到一个“本征旋转,它的塔特-布莱恩角是α,β,γ,绕z,y,x轴”,在我们的脑海中可视化。
这是可悲的,因为我认为旋转矩阵是最容易解释的表示之一。
不要把它们看作旋转,而要把它们看作是一个新坐标系的单位矢量。
我们描述坐标系相对于另一个坐标系的位置(我们从哪里旋转),例如从相机的坐标系角度(z向前,y向上)。旋转矩阵的第一列是用旧坐标系表示的新x轴,第二列是y轴,依此类推。单位矩阵不会旋转,因为所有单位向量都与前一个坐标系相同。
\[r=\Begin{bMatrix}X_x&;Y_x&;Z_x\\X_y&;Y_y&;Z_y\\X_z&;Y_z&;Z_z\end{bMatrix}\]。
让我们回到以相机坐标系表示头部的示例,并假设头部位置在相机的前面。因此,通过解释前面的矩阵,我们可以查看新的z轴:
我们很快就可以看到,z轴的z部分几乎是-1。这意味着鼻子指向与相机相反的方向,例如。如果有人坐在摄像机前面,请将镜头对准摄像机。
我们还可以看到人的头部稍微向上旋转(z轴的正y分量),并且稍微指向摄像机右侧(负x分量)。
就这样!旋转矩阵只是描述新坐标系的单位矢量。