algorithm - 多边形的对角线是在里面还是在外面?

标签 algorithm math polygon

我有三个连续的多边形点,比如p1,p2,p3。现在我想知道p1和p3之间的正交是在多边形内部还是在多边形外部。

我通过取三个向量 v1、v2 和 v3 来实现。多边形中点 p1 之前的点称为 p0。
v1 = (p0 - p1)<br/> v2 = (p2 - p1)<br/> v3 = (p3 - p1)

引用this问题,我正在使用该问题的已接受答案中所示的方法。它仅适用于逆时针方向。如果我的点是顺时针方向怎么办?

我也知道我的整个多边形是顺时针或逆时针的。因此我选择向量 v1 和 v2。但我仍然遇到一些问题。我正在展示一个我遇到问题的案例。

alt text

该多边形是逆时针方向的。是从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/

相关文章:

php - Php Imagick来自可变中心点的裁剪图像

java - 将图像中的多边形保存到 PostGIS 数据库

swift - 在 Swift 中使用 Core Graphics 填充多边形

algorithm - 线段树正确但查询输出不正确

c++ - OpenGL:为什么我的相机上下颠倒?

algorithm - 如何从具有行号和列号的矩阵中提取数据

javascript - 无需临时矩阵的旋转和平移 R-T 矩阵

algorithm - 如何找到凸多边形与其他凸多边形的最佳拟合

java - 广度优先搜索以查找两个地铁站之间的路线

algorithm - 词搜索算法