我有三个连续的多边形点,比如p1,p2,p3。现在我想知道p1和p3之间的正交是在多边形内部还是在多边形外部。
我通过取三个向量 v1、v2 和 v3 来实现。多边形中点 p1 之前的点称为 p0。
v1 = (p0 - p1)<br/>
v2 = (p2 - p1)<br/>
v3 = (p3 - p1)
引用this问题,我正在使用该问题的已接受答案中所示的方法。它仅适用于逆时针方向。如果我的点是顺时针方向怎么办?
我也知道我的整个多边形是顺时针或逆时针的。因此我选择向量 v1 和 v2。但我仍然遇到一些问题。我正在展示一个我遇到问题的案例。
该多边形是逆时针方向的。是从v1和v2的原点开始的。
最佳答案
由于你的点是连续的,你可以通过检查三角形 p1 p2 p3 的方向来解决这个问题。如果方向与多边形的方向相同,则对角线在内部,否则在外部。
要确定三角形的方向,最简单的方法是计算有符号面积并检查符号。计算
p1.x * p2.y + p2.x * p3.y + p3.x * p1.y - p2.x * p1.y - p3.x * p2.y - p1.x * p3.y
如果该值的符号为正,则方向为逆时针方向。如果符号为负,则方向为顺时针方向。
准确地说,上述方法仅提供对角线位于多边形哪一侧的信息。显然,多边形在后面的点仍然可以与对角线相交。
关于algorithm - 多边形的对角线是在里面还是在外面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816572/