不存在完全绝对的坐标,毕竟坐标系永远是相对的,计算机为了为了完成物体到屏幕的渲染过程往往会使用多个坐标系,它们的出现恰恰是为了在不同情况下使用更方便。
世界空间 World Space
世界坐标系是一种特殊的坐标系,它为所有要指定的其他坐标系建立“全局”参考系。换句话说,我们可以用世界坐标空间来表达其他坐标空间的位置,但我们不能用任何更大的外部坐标空间来表达世界坐标空间。
由于不存在"绝对位置",我们使用术语"绝对"来表示"在世界坐标空间中表达"。 世界坐标空间也称为全局或通用坐标空间。
对象空间 Object Space
- 对象空间是与特定对象关联的坐标空间
- 每个对象都有自己独立的对象空间
- 当对象移动或改变方向时,与该对象关联的对象坐标空间也随之移动 图形学中,对象空间也称为模型空间
相机空间 Camera Space
对象空间的一个特别重要的示例是相机空间,它是与用于渲染的视点相关联的对象空间。在相机空间中,相机位于原点, +X 指向右侧, +Z 指向前方(进入屏幕,相机面向的方向), +Y 指向“向上”。❗注意这是左手惯例。
直立空间 Upright Space
直立空间的轴与世界空间的轴平行,但直立空间的原点与物体空间的原点重合。 直立空间通过旋转变换得到对象空间,通过平移得到世界空间。反过来说通过平移原点,世界空间转换为直立空间。为了将直立空间转换为物体空间,我们旋转轴直到它们与物体空间轴对齐。(有的地方将此空间称作惯性空间)
坐标空间变换 Coordinate Space
Transformations 当某一位置在特定空间中已知,我们需要其在另一空间中明确,回答该问题的计算过程称作坐标空间变换。请注意这一过程中,物体并没有发生真正的变动,我们只是在不同的坐标空间中表达它的位置,也就是改变了参考系。
想象坐标空间变换的两种有用方法。一种方法是用坐标空间来固定我们的视角。这是主动变换范例:向量和对象随着坐标的变化而移动。在被动变换范式中,我们相对于被变换的事物保持固定的视角,使得看起来好像我们正在变换用于测量坐标的坐标空间。变换对象对坐标的影响与对坐标空间执行相反的变换具有相同的效果。主动范式和被动范式都非常有用,对它们之间的差异认识不足是导致错误的常见原因。
从对象空间到相机空间
第一步旋转、平移到世界空间,第二部平移然后旋转世界空间到相机空间。
我们通过描述坐标空间的原点和轴来指定坐标空间。原点是定义空间位置的点,可以像任何其他点一样进行描述。轴是向量并描述空间的方向(以及可能的其他信息,例如比例),并且可以使用用于描述向量的常用工具。我们用来测量原点和轴的坐标必须相对于其他坐标空间。
基向量 Basis Vectors
令 为某个任意点,其主体空间坐标 已知。让 代表同一点的世界空间坐标。我们知道原点 以及向左和向上方向的世界空间坐标,分别表示为 和 。现在 可以通过以下方式计算。
这里, 、 和 是 3D 空间的基向量。向量 可以具有任何可能的大小和方向,并且我们可以唯一地确定坐标 、、。
假设有一个对象,其基本向量为 、 和 。 为身体空间中某个任意向量的坐标, 为同一向量在直立空间中的坐标。那 和 之间存在这样的关系。
在正交基的特殊情况下,我们有一种简单的方法来确定身体空间坐标,只需要知道身体轴的世界坐标。因此,假设 、 和 形成正交基。
满足上述式子的标准基向量是线性无关。
判断向量是否线性无关
- 线性无关,则 仅有 0 解 。
- 对于 基向量,其秩应当等于 。
- 向量组中不存在一个向量可以由余下 m-1 的向量表示。
要判断它们是否线性无关,我们可以将它们作为一个矩阵的列放置,然后进行行简化。如果简化后的矩阵每行都有一个主元(即每一行都有一个领先的 1),那么这个向量组是线性无关的。