什么是确定一个vector是否在2D中另外两个vector之间的好方法?

我可以用角度来操作,但是我还没有计算角度(并且希望避免这样做)。 尽管如此,可以计算和caching局部坐标框架角度。

这是在每个物理模拟对象的凸分解中的每个凸多边形的每个顶点上运行的例程,所以它应该尽可能快。

我有一个凸多边形的角落,所以我有一个从顶点到顶点1的vector和从顶点到顶点+1的另一个vector。 很容易看出,对于一个凸多边形,多边形的内部位于这两个向量平均的方向上。

我想确定给定的vector是否指向该区域或其外部。 我可以使用交叉产品和点产品以及类似的快速操作来完成此操作吗? 我正在考虑最终将这些计算卸载到顶点着色器,但是由于它会根据对象的速度更改所需的顶点数量,所以我认为这个逻辑可能会变得很冒险。 无论哪种方式,在我尝试顶点或几何着色器实现之前,我最好先让CPU解决scheme正常工作。

下面是一个例子:我想知道N是否在A和B之间。一个点在-10(= 350)度,B在15度。 所以它看起来有点像<符号。 函数应该只在N介于-10和15之间,介于350和375之间等情况下返回true。这只是画一幅心理图片,函数的input是向量:我想避免在角度上操作,因为我不想致电atan2。

如果知道交叉B总是肯定的,它可能会有所帮助。 这是因为我的多边形CCW缠绕和凸。

我认为解决这个问题的最好方法是给A x B> 0,简单地检查A x N,N x B也是正数。 这似乎运作良好。

端点向量A和B,在2d空间。 第三个向量C可能在它们之间的某处。 这是我们正在检查。

如果A +(BA)*(距离(A,C)/距离(A,B))= C,则线段相交。