1.坐标系统
- (1) 局部空间(Local Space)或物体空间(Object Space);
- (2) 世界空间(World Space);
- (3) 观察空间(View Space)或视觉空间(Eye Space);
- (4) 裁剪空间(Clip Space);
- (5) 屏幕空间(Screen Space);
2.坐标变换
其中几个比较重要的转换矩阵为:模型(Model)、**视图(View)和投影(Projection)**三个矩阵,具体过程如下:
- (1) 顶点坐标开始于局部空间(Local Space),称为局部坐标(Local Coordinate),经过模型(Model)矩阵变换后,得到世界空间(World Space)下坐标,称为世界坐标(World Coordinate);
- (2) 世界坐标(World Coordinate)再经过视图(View)矩阵变换后,就得到观察空间(View Space)下的观察坐标(View Coordinate),**观察坐标(View Coordinate)**是指以相机或观察者角度观察到的坐标;
- (3) 得到观察坐标(View Coordinate)坐标后,需要对观察坐标(View Coordinate)进行裁剪(仅保留近平面到远平面之间区域,这个区域就是裁剪空间(Clip Space)),得到将会出现在屏幕上的顶点;
- (4) 最后,通过视口变换(Viewport Transform),将裁剪坐标转换为**屏幕空间(Screen Space)**屏幕坐标;
可以用矩阵形式描述如下:
V_{clip} = M_{projection}\cdot M_{view} \cdot M_{model} \cdot V_{local}
3.左右手坐标
3.1 左右手坐标系定义
常见的左右手坐标系就有以下两种:
3.2 左右手定则
由于左右手坐标系确实容易记混,可以通过如下左手定则和右手定则来帮助判断左右手坐标系:
右手定则:右手拇指竖直向上表示OZ轴向,将指掌握成弧形,这时指掌到指尖的方式正好是OX轴经过最短路径转到OY轴方向。
左手定则:左手拇指竖直向上表示OZ轴向,将指掌握成弧形,这时指掌到指尖的方式正好是OX轴经过最短路径转到OY轴方向。
4.Unity坐标系
Unity是典型的左手坐标系,它的物体坐标系和世界坐标系如图所示:X朝右,Y朝上,Z朝里
观察坐标系则是右手坐标系(worldToCameraMatrix,即T_{cw}):
5.OpenCV坐标系
观察坐标系为右手坐标系:
对应手型如下:
6.OpenGL坐标系
观察坐标系为右手坐标系:
7.IMU坐标系
IMU坐标系为右手坐标系,手机平放在桌面上时,陀螺仪获取四元数为(0, 0, 0, 1),安卓陀螺仪默认Z轴指北: