返回

如何在 3D 数学中操作局部坐标系

前端

在一个 3D 世界中,每个物体都拥有相对于自身原点和坐标轴的唯一坐标系,我们称之为局部坐标系或局部空间。理解局部坐标系对于操纵和放置 3D 对象至关重要。

局部坐标系的定义

局部坐标系由三个垂直轴定义:x、y 和 z。x 轴通常指向对象的前方,y 轴指向上方,z 轴指向对象的一侧。原点是三个轴相交的点,定义了对象的中心。

在局部坐标系中移动对象

在局部坐标系中移动对象涉及改变对象的原点坐标。例如,要将对象向 x 轴方向移动 5 个单位,可以将原点的 x 坐标增加 5。

object.position.x += 5;

在局部坐标系中旋转对象

在局部坐标系中旋转对象涉及绕着轴旋转。例如,要绕 y 轴旋转对象 90 度,可以使用以下代码:

object.rotation.y += Math.PI / 2;

在局部坐标系中缩放对象

在局部坐标系中缩放对象涉及改变对象的比例。例如,要将对象沿所有轴缩放 2 倍,可以使用以下代码:

object.scale.set(2, 2, 2);

将局部坐标系转换为世界坐标系

在 3D 环境中,还需要将局部坐标系转换为世界坐标系。世界坐标系是整个场景的通用坐标系,它定义了所有对象的绝对位置。

要将局部坐标系转换为世界坐标系,可以使用对象的位置、旋转和缩放信息。以下是转换矩阵:

| x_world |   | x_local |   | 1 0 0 0 |
| y_world | = | y_local | * | 0 1 0 0 |
| z_world |   | z_local |   | 0 0 1 0 |
| 1       |   | 1       |   | 0 0 0 1 |

实践示例

假设我们要将一个立方体对象移动到世界坐标系中 (5, 10, 15) 的位置。立方体对象的局部坐标系已转换为世界坐标系:

| 5 |   | x_local |   | 1 0 0 5 |
| 10 | = | y_local | * | 0 1 0 10 |
| 15 |   | z_local |   | 0 0 1 15 |
| 1 |   | 1       |   | 0 0 0 1 |

因此,立方体对象的局部坐标系中的原点已移动到世界坐标系中 (5, 10, 15) 的位置。

总结

理解局部坐标系对于操纵和放置 3D 对象至关重要。通过理解局部坐标系的定义以及如何对其进行变换,我们可以轻松地在 3D 环境中创建交互式和动态的场景。