矢量、顶点和四元数(Direct3D 9)

在整个 Direct3D 中,顶点描述位置和方向。 基元中的每个顶点都由一个向量描述,该矢量提供其位置、颜色、纹理坐标和提供其方向的普通向量。

四元数将第四个元素添加到定义三分量向量的 [x, y, z] 值。 四元数是矩阵方法的替代方法,通常用于三维旋转。 四元数表示三维空间中的轴,以及围绕该轴的旋转。 例如,四元数可能表示 (1,1,2) 轴和 1 弧度旋转。 四元数携带有价值的信息,但它们的真正力量来自可以对其执行的两个作:合成和内插。

对四元数执行合成类似于组合它们。 两个四元数的组成如下图所示。

四元数表示法插图

应用于几何图形的两个四元数的构成意味着“通过旋转ー围绕轴旋转几何图形,然后通过旋转₁围绕轴旋转它”。在这种情况下,Q 表示围绕单个轴的旋转,这是应用 qー 的结果,然后 q₁ 到几何图形。

使用四元数内插,应用程序可以计算从一个轴和方向到另一个轴的平滑合理路径。 因此,q₁ 和 qー 之间的内插提供了一种从一个方向到另一个方向的动画的简单方法。

在组合和内插一起使用时,它们为你提供了一种简单的方式来作几何图形,使其看起来很复杂。 例如,假设你有一个要旋转到给定方向的几何图形。 你知道你想要围绕轴 ₁ 轴旋转 rー 度,然后围绕轴旋转 r₁ 度,但不知道最终四元数。 通过使用合成,可以将几何图形上的两个旋转组合在一起,以获取结果的单个四元数。 然后,你可以从原始项内插到组合四元数,以实现从一个到另一个的平滑转换。

D3DX 实用工具库包含有助于处理四元数的函数。 例如,D3DXQuaternionRotationAxis 函数向定义旋转轴的向量添加旋转值,并在由 D3DXQUATERNION 结构定义的四元数中返回结果。 此外,D3DXQuaternionMultiply 函数构成四元数,D3DXQuaternionSlerp 在两个四元数之间执行球面线性内插。

Direct3D 应用程序可以使用以下函数来简化使用四元数的任务。

Direct3D 应用程序可以使用以下函数来简化使用三分量向量的任务。

D3DX 实用工具库提供的 数学函数 包含许多使用双分量和四分量矢量简化任务的其他函数。

坐标系和几何图形