3D数学基础:图形与游戏开发---随笔三

多坐标系


3.1 为什么要使用多坐标系?

不同的情况下使用不同的坐标系更加方便。(定义一个坐标系是为了我们方便描述一件事情,而在不同的领域它有不同的作用,比如相对论)


3.2 一些有用的坐标系

  1. 世界坐标系。整个世界的坐标系(理论上的)。
    1. 每个物体的位置和方向。
    2. 摄像机的位置和方向。
    3. 世界中每一点的地形是什么(如山丘、建筑、湖泊等)。
    4. 各物体从哪里来、到哪里去(NPC的运动策略。)。
  2. 物体坐标系。物体本身的坐标系(每个物体都有自己的坐标系,轴必两两垂直,但并不一样会与世界坐标系轴平行)。
    1. 周围有需要互相作用的物体吗?(我要攻击它吗?)
    2. 哪个方向?在我前面吗?我左边一点?右边?(我应该向它射击还是转身就跑?)
  3. 摄像机坐标系。2D平面可以看到的3D场景(我们电脑能看到的3D场景)。
    1. 3D空间中的给定点在摄像机前方吗?
    2. 3D空间中的给定点在屏幕上,还是超出摄像机平截椎体的左、右、上、下边界?(平截椎体就是摄像机能观察到的金字塔区域)
    3. 某个物体是否在屏幕上?它的部分在,或全部不在?
    4. 两个物体,谁再前面?(该问题称作可见性检测)
  4. 惯性坐标系。与世界坐标系的轴平行,并且与物体坐标系具有相同原点的坐标系。

3.3 嵌套式坐标系

想象一下,我们每个物体都有自己的坐标系。举例子(一只羊):羊的身体,羊的头部、尾巴、鼻子、眼睛、耳朵、4条腿。身体坐标系中可以嵌套头部的坐标系,而头部的坐标系可以嵌套鼻子、眼睛、耳朵的坐标系。这样就嵌套了坐标系。从而方便了我们的描述(例如耳朵轻微晃动,只要改变耳朵的物体坐标系)。


3.4 描述坐标系

我们要提出一个重要的问题:怎样在一个坐标系中描述另一个坐标系?

其实就是将各个坐标之间原点的描述。想象一下,你已经知道世界坐标系与物体坐标系的原点。并且物体坐标系的原点坐标在世界坐标系中已经是一个已知的点,假设是这个物体坐标系的原点在世界坐标系中为(1,1,1)吧。那我们就可以通过(1,1,1)这个点对物体坐标系上每个点做四则运算,就可以知道这个物体坐标系上的任意一点在世界坐标系的描述。


3.5 坐标系转换

当然,上面的方法如果算起来,会特别麻烦。因为我们用的是物体坐标系与世界坐标系之间的转换,如果物体坐标系与世界坐标系的轴不是平行的话,那我们就需要进行很复杂的计算。

因此,我们引入了惯性坐标系,作为中介。先将物体坐标系旋转成惯性坐标系(我们知道惯性坐标系与世界坐标系平行,并且以物体坐标系作为原点),再将惯性坐标系转换成世界坐标系。

这样,我们就得到一个从物体坐标系到世界坐标系的转换。而且相当的方便,因为我们只要经过一次旋转+几次平移就可以得到我们想要的物体坐标系在世界坐标系上的描述。

猜你喜欢

转载自blog.csdn.net/qq_37340753/article/details/81302847
今日推荐