太长不看
假设右(或左)手坐标系下的旋转矩阵和平移向量分别为和,左(或右)手坐标系下分别为和,假设,则有
推导
右手食指为Y轴正方向,中指为Z轴正方向,大拇指为X轴正方向,这样的坐标系为右手坐标系。右手换成左手则为左手坐标系。将一个坐标系的一个轴取反向,则改变了手性;两个轴取反向,则等价于绕第三轴旋转180度;将三个轴都取反向,则是前面两者的叠加,改变手性+旋转。
左右手坐标系的转换在图形学开发中经常出现,例如OpenGL使用右手坐标系,Unity使用左手坐标系。下文所述右手坐标系即是OpenGL坐标系,左手坐标系即是Unity坐标系。
左手坐标系下有一个点,则在右手坐标系下,该点应该表示为。
假设空间中有变换矩阵
则左右手坐标系下点的变换即可用来表示,即
假设空间中有旋转矩阵和平移向量,世界坐标系下有点,对应相机坐标系下有点,则有
假设、、、均定义在右手坐标系下,、、、分别为上述变量在左手坐标系下的定义,即
左右手坐标系下位置的变换我们已经知道,即,则有
已知右手坐标系下,故有左右手坐标系下旋转矩阵和平移向量的的转换
以上