找到右边哪两个点

时间:2017-04-02 12:24:43

标签: algorithm vector camera three.js

假设我有两个vector3,一个用于摄像机位置,另一个用于目标位置。我还从相机的每一侧有两个矢量V1,V2。我不知道哪一个在右边,但其中一个肯定在右边。

从上面看起来像这样:

enter image description here

我怎么知道V1是在右边还是左边?

我有一个内置功能可以将相机向右移动,所以我想这样做并检查距离并将其恢复到原来的位置,但那是一个难看的解决方案。

我还想过使用{target - camera}和{V1 - camera}矢量之间的点积,如果它是正数,那么它就在右边,如果是负数,那么离开了,但看起来它并没有像那样工作,因为例如:

{0,1,0}.{1,1,0} = {0,1,0}.{-1,1,0} = 1

关于如何做到的任何其他想法?

1 个答案:

答案 0 :(得分:0)

感谢您的评论,答案是采用{cam, target, cam + up}所跨越的平面的法线,并使用v1做点积分。

即:{{cam + up} - {cam} x {target - cam}} . {v1 - cam}

det({cam + up} - {cam} | {target - cam} | {v1 - cam})相同,因为所有三个减法都是线性无关的。