-->

与分区任意多边形内点(Point inside arbitrary polygon with par

2019-10-21 09:30发布

说我有一个多边形。 它可以是一个凸一个或没有,不要紧,但它没有孔。 它也有“内部”的顶点和边,这意味着它被分割。

是否有当我要检查,如果一个点是那种多边形内部的任何一种流行/知算法或标准程序?

我这么问是因为卷绕圈数和光线投射不是在这种情况下准确

提前致谢

Answer 1:

你需要澄清你的内心顶点和边'的意思。 让我们以一个非常普遍的情况,并希望你找到的相关性。

光线投射(在多边形点)算法拍摄断射线计数与所述多边形的边的交叉点(奇数交点=内,即使=之外)。
因此,它准确地给出正确的结果无论是否从不相交的梯形孔或三角形通孔(内边缘?)内启动或即使多边形的一部分被完全分隔的和/或自相交。
不过,在什么样的顺序,你养活,使得所有的点都正确评估的多边形的顶点?
虽然这是特定代码,如果您使用的是计数每一个路口与多边形的边的实现,那么这种方法将工作 -
- 打破主多边形到多边形元素。 例如 - 梯形孔是多边形的组件。
- 开始与(0,0)的顶点(不要紧,无论(0,0)实际上在于WRT您的多边形),之后将第一组件的顶点,最后一个顶点之后重复它的第一个顶点。 - 包含另一个(0,0)的顶点。
- 包括下一个组件,最后一个顶点之后重复它的第一个顶点。
- 重复每个组件的上述两个步骤。
- 结束与最终(0,0)的顶点。
2成分EG-让两种组分的顶点是(1X,1Y),(2X,2Y),(3X,3Y)和(AX,AY),(BX,BY),(CX,CY)。 其中(AX,AY),(BX,BY),(CX,CY)可以是来自不相交的三角形孔什么,相交三角形或分离三角形。
因此,单数连续多边形的顶点是数学上等效于2个部件是 -

(0,0),(1X,1Y),(2X,2Y),(3X,3Y),(1X,1Y),(0,0),(AX,AY),(BX,BY),(CX中,Cy),(AX,AY),(0,0)

要了解它是如何工作,尝试上的划痕pad.-绘制这个数学上等价的多边形
1.标记所有顶点,但不加入他们呢。
2.标记重复顶点分别也。 通过标记他们接近原始点做到这一点,而不是他们。 (在距离e,其中E-> 0(趋于/方法))(以帮助观察)
3.现在加入以正确的顺序的所有顶点(如在上面的例子中)
你会发现,这个形成连续的多边形,只变成在E = 0限制不相交。
您现在可以没有任何问题发送这个数学上等价多边形的光线投射功能(甚至匝数功能?)。



文章来源: Point inside arbitrary polygon with partitions