不少牛人都写了文章来描述坐标系中点的旋转,只要百度搜索“旋转矩阵”就会出现很多,这里不再解释。但是也有网友看到过“变换矩阵”这个名词,可能会有些迷惑,这里用“人话”说一下到底什么是“旋转矩阵”和“变换矩阵”。
先说一下什么是旋转矩阵
先看看旋转矩阵定义:旋转矩阵(Rotation matrix),是在乘以一个向量的时候"改变向量的方向但不改变大小"的效果的矩阵.
空间中有一个点p,我们再定义一个坐标系xyz,则可以称点p位于坐标系xyz中.我们用向量v来表示p点在xyz中的方向和位置.
向量v绕某个旋转轴(注意不一定是坐标轴)旋转,旋转后的向量设为v’,我们用矩阵M来计算v’:
v’ = M * v
M就称为旋转矩阵.
比较v和v’:
- v和v’的模相等:|v|=| v’|,而且必须相等,否则M不能称作旋转矩阵.
- v和v’方向,可以相同,可以相反,也可以共线,垂直,相交,平行等等情况都可以.在满足第一条的情况下,位置可以随意变动.
- v和v’表示同一个点在空间中不同的位置和方向.但不管怎样改变位置和方向,这个点距离旋转轴的距离不能改变.
- 涉及一个坐标系.
变换矩阵
这里仅仅考虑不同坐标系之间的坐标变换.
空间中有一点p,它在坐标系xyz中对应的向量为v;而在另一个坐标系XYZ中对应的向量为V,如果存在矩阵R,使得下面的公式成立:
V = R * v
称将xyz中的向量v变换到坐标系XYZ中的向量V.
对比v和V:
- v和V的模不一定相等:|v|<>|V|,当然它们的模可以相等:|v|=|V|.
- v和V的方向不一定相同,当然可以相同,可以相反,共线,垂直,相交,平行等等情况都可以.
- v和V表示空间中的同一个点在两个坐标系中的坐标(位置),方向和大小.
- 涉及两个坐标系.
下图是一个坐标变换的图示:
可以很清楚地看到,空间中同一个p点在两个不同的坐标系中的向量v和V的大小和方向全都不一样.
而且两个坐标系运动的位置和方向也完全没有什么规律可循,但仍然能进行坐标变换,找出变换矩阵.
坐标系的旋转只是坐标变换的一种,还有一种变换叫坐标系平移。