我有三个连续的多边形点,例如 p1,p2,p3。现在我想知道p1和p3之间的正交是在多边形内部还是在多边形外部。
我通过取三个向量 v1、v2 和 v3 来做到这一点。多边形中点 p1 之前的点称为 p0。
v1 = (p0 - p1)
v2 = (p2 - p1)
v3 = (p3 - p1)
参考this https://stackoverflow.com/questions/693806/how-to-determine-whether-v3-is-between-v1-and-v2-when-we-go-from-v1-to-v2-counter问题,我正在使用该问题的已接受答案中所示的方法。它仅适用于逆时针方向。如果我的点是顺时针方向怎么办?
我也知道我的整个多边形是顺时针或逆时针的。因此我选择向量 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
如果该值的符号为正,则方向为逆时针方向。如果符号为负,则方向为顺时针方向。
准确地说,上述方法仅提供对角线位于多边形哪一侧的信息。显然,多边形仍然可以在稍后的点与对角线相交。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)