一、笛卡尔坐标
2D坐标系都是等价的,例如两个2D坐标系A和B,旋转或翻转坐标系A,总能使其x,y轴指向和B的x,y轴指向相同。
3D坐标系之间不一定等价,存在两种3D坐标系:左手坐标系和右手坐标系(拇指、食指和中指分别代表x,y,z的正方向,OpenGL中的坐标就是左手坐标系)。如果两个坐标系同属于左手坐标系或者右手坐标系,则两个坐标系可以通过旋转翻转重合。但是左手坐标系和右手坐标系无论怎么翻转,都不可能重合。左、右手坐标系之间可以通过反向一个轴的符号相互转换,反向两个轴的符号则相当于没变化。
二、多种坐标系
不同的情况下使用不同的坐标系更加方便,在计算机中创建虚拟世界时,应该选择较为简单的坐标系。
世界坐标系:我们所关注的场景中的最大的坐标系,也称全局坐标系,可以描述其他坐标系的位置
物体坐标系:和特定物体相关联的坐标系,随物体移动而移动,坐标轴方向不需要和世界坐标系保持平行。也称模型坐标系,因为模型顶点的坐标都是在模型坐标系中描述的。
摄像机坐标系:是和观察者密切相关的坐标系,观察者(摄像机)在原点,摄像机坐标系是特殊的物体坐标系,它只定义在摄像机的视角范围内,具体就是下面的锥体。摄像机坐标系通过投影过程转换到2D屏幕上(下图矩形)。
惯性坐标系:原点和物体坐标系重合,但是惯性坐标系的坐标轴平行于世界坐标系,下图描述了世界坐标系、物体坐标系和惯性坐标系三者之间的关系。引入惯性坐标系的原因在于方便世界坐标系和物体坐标系之间的转换,从物体坐标系到惯性坐标系只需要旋转,从惯性坐标系到世界坐标系只需要平移。这也就能确定某一个模型中的某一点在世界坐标系中的绝对位置。其实很像运动的相对速度和绝对速度之间的关系,能够将复杂的运动过程分解成在某个坐标系下的简单的运动过程。
(物体坐标系中一点的坐标-----(旋转)----惯性坐标系中的坐标----(平移)---世界坐标系中的坐标)
嵌套坐标系:根据物体运动的复杂性,物体能在不同层次上分为许多不同的坐标系,称为子坐标系嵌入父坐标系,这种坐标系的父-子关系定义了一种层次的、或树状的坐标系,世界坐标系是这棵树的根。(例如世界坐标系中的一只羊,羊的物体坐标系看做世界坐标系的子空间,同理,羊耳朵物体坐标系看做是羊物体坐标系的子空间)