多坐标系
一些有用的坐标系
世界坐标系
通过世界坐标系可以知道其他坐标系的位置,但是不能从其他坐标系中知道世界坐标系的位置,世界坐标系也被成为全局坐标系或者宇宙坐标系。
关于世界坐标系的问题都是与初始原点
和环境
的,例如:
- 每个物体的位置和方向
- 摄像机的位置和方向
- 物体从哪里来,到哪里去
- 世界中每一天的地形是什么样子的?
物体坐标系
物体坐标系是与物体相关联的坐标系,每个物体都会带着自己的坐标系移动。例如:某人告诉你该如何移动时,
- 有的人跟你讲“向右”,这是站在物体坐标系中
- 有的人跟你讲“向东”,这是站在世界坐标系中
关于物体坐标系可能遇到的问题是:
- 周围有需要相互作用的物体么
- 相对于物体坐标系信息
摄像机坐标系
与观察者有关的坐标系,可以理解为是一种特殊的“物体坐标系”。
在摄像机坐标系中,摄像机在原地,x轴正方向向右,z轴正方向向前(朝向屏幕内或摄像机镜头方向),y轴正方向向上。
关于摄像机坐标系的典型问题是哪些物体应该在屏幕上绘制出来:
- 3D坐标系中给定的点是在摄像机前面还是后面呢?
- 3D坐标系中给定的点是在屏幕上?还是在摄像机是视锥体的左、右、上、下边界?
- 某个物体是否在屏幕上?是部分在还是全部都在?
- 两个物体谁在前面?谁在后面?
惯性坐标系
为了更好理解世界坐标系到物体坐标系的转换,引入了惯性坐标系。惯性坐标系的原点与物体坐标系的原点重合,x轴方向与世界坐标系x轴方向平行。
从世界坐标系到惯性坐标系只需要平移,从惯性坐标系到物体坐标系只需要旋转。
嵌套式坐标系
选择合适的坐标系分析,将坐标系拆分成多块,而不是一直站在世界坐标系的角度看问题。例如:
小羊走路时,羊头晃动,羊耳朵上下摆动。
如果程序员站在世界坐标系的角度来跟踪羊耳朵的运动轨迹,这将是噩梦般的体验。可以将上述场景拆分为:羊身体相对于世界坐标系运动,羊头相对于羊身体运动,羊耳朵相对于羊头运动。
通过对场景中的坐标系拆分来简化分析过程
坐标系转换
进行坐标系转换时,不应考虑坐标系中的点是如何转换的,为了更好的扩展性,应该考虑坐标轴的转换过程,这样更具有一般意义。
通过惯性坐标系作为世界坐标系和物体坐标系的转换中介,例如:将机器人的物体坐标系转换为世界坐标系
- 将物体坐标系顺时针旋转45度得到惯性坐标系
- 将惯性坐标系向下、左平移得到世界坐标系
但是站在机器人上一点的角度来看是与上述转换过程相反的:
- 自身逆时针旋转45度
- 向上、右平移得到世界坐标系
这与开车过程中选择坐标系不同也会导致分析结果不同,如果站在世界坐标系中,则是车辆在向前行驶;如果站在物体坐标系中,则是世界在向后移动