根据我的相机外观计算垂直向量

时间:2018-10-11 19:43:52

标签: math three.js linear-algebra

我的相机注视是在正交透视中(就像在2D空间中一样),它从顶部凝视着地面。我正在尝试确定方向,以便角色向左和向右移动。

给定向量,如何导出垂直向量?因此它可以左右移动。

1 个答案:

答案 0 :(得分:0)

任何3D向量(不计零向量)都有多个有效的垂直向量。

您可以通过计算给定2个非平行向量的叉积来计算垂直向量。因此,您将有另一个向量可以对它进行计算,例如参考。

因此,假设您有一个方向/前向矢量:

var forward = new THREE.Vector3(0, 0, 1);

然后使用另一个向量,例如THREE.Vector3(0, 1, 0)。 (如果y是向上的,那么它将是向上的单位矢量。。)然后,通过计算叉积,我们可以计算 right 方向矢量(或通过翻转顺序来 left 方向,或者简单地取消 right 向量):

var right = forward.cross(new THREE.Vector3(0, 1, 0)).normalize();

您还可以通过执行以下操作获得相对的 up 向量:

var up = right.cross(forward).normalize();

哪个渲染图看起来像这样。蓝色箭头是正向矢量,红色箭头是向右矢量,绿色箭头是向上矢量,深绿色是要针对其计算的参考。

Here's an animated version of the above example.

Example