【问题标题】:Calculate a perpendicular vector from my camera lookat从我的相机观察中计算垂直向量
【发布时间】:2019-03-16 23:48:57
【问题描述】:

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

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

【问题讨论】:

    标签: math three.js linear-algebra


    【解决方案1】:

    任何 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();
    

    渲染出来的会是这个样子。蓝色箭头是前向向量,红色箭头是右向量,绿色箭头向上,深绿色是计算参考。

    Here's an animated version of the above example.

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 2011-09-11
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 2014-12-28
      • 1970-01-01
      相关资源
      最近更新 更多