【发布时间】:2019-03-16 23:48:57
【问题描述】:
我的相机观察是在正交透视中(很像在 2D 空间中),它从顶部盯着地面。我正在尝试确定方向,以便我的角色左右移动。
给定向量,如何导出垂直向量?所以它可以左右移动。
【问题讨论】:
标签: math three.js linear-algebra
我的相机观察是在正交透视中(很像在 2D 空间中),它从顶部盯着地面。我正在尝试确定方向,以便我的角色左右移动。
给定向量,如何导出垂直向量?所以它可以左右移动。
【问题讨论】:
标签: math three.js linear-algebra
任何 3D 向量(不包括零向量)都有多个有效的垂直向量。
您可以通过计算给定 2 个非平行向量的叉积来计算垂直向量。所以你会有另一个向量来计算它,比如说一个参考。
因此假设你有一个方向/前向向量:
var forward = new THREE.Vector3(0, 0, 1);
然后使用另一个向量,例如THREE.Vector3(0, 1, 0)。 (如果y是向上的,那么这就是向上的单位向量。)然后通过计算叉积,我们可以计算出右方向向量(或left方向通过翻转顺序或简单地否定right向量):
var right = forward.cross(new THREE.Vector3(0, 1, 0)).normalize();
您还可以通过以下方式获得相对 up 向量:
var up = right.cross(forward).normalize();
渲染出来的会是这个样子。蓝色箭头是前向向量,红色箭头是右向量,绿色箭头向上,深绿色是计算参考。
【讨论】: