Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Geometry 自相交/复杂多边形中的点_Geometry_Polygon - Fatal编程技术网

Geometry 自相交/复杂多边形中的点

Geometry 自相交/复杂多边形中的点,geometry,polygon,Geometry,Polygon,我读过,但我不确定该解决方案是否适用于中间被内部线段分割的多边形。想象一个正方形的图8,或者简单地把两个正方形叠在一起。任何一个正方形内的点都肯定位于多边形的“内部”,但交叉计数将根据您所走的方向(以及您是否穿过该内部线段)而有所不同 我想处理这个问题的一种方法是将多边形视为两个独立的多边形。。。(在这种情况下,我需要一个算法来将一个复杂的多边形分割成一组简单的多边形?) 或者对光线投射算法或多边形中的另一点算法进行了改进,以处理我描述的情况?我不确定这是否是最佳解决方案;但是光线投射算法适用

我读过,但我不确定该解决方案是否适用于中间被内部线段分割的多边形。想象一个正方形的图8,或者简单地把两个正方形叠在一起。任何一个正方形内的点都肯定位于多边形的“内部”,但交叉计数将根据您所走的方向(以及您是否穿过该内部线段)而有所不同

我想处理这个问题的一种方法是将多边形视为两个独立的多边形。。。(在这种情况下,我需要一个算法来将一个复杂的多边形分割成一组简单的多边形?)


或者对光线投射算法或多边形中的另一点算法进行了改进,以处理我描述的情况?

我不确定这是否是最佳解决方案;但是光线投射算法适用于任何凸多边形。任何多边形都可以分解为凸三角形。(双框不是凸多边形,因为如果用线段连接两个顶点,在某些情况下,会穿过中心边。)因此,要澄清:首先将多边形分解为三角形,然后使用光线投射确定点是否位于三角形内


[编辑:光线投射确实适用于凹多边形。抱歉,我弄错了。]

所述的算法会很好地工作,因为如果你仔细观察它,你会发现它只是计算交叉数。如果我们从“8”的任一“子多边形”开始,在最坏的情况下,我们将与边相交3次,通常是一次。它确实在里面。否则就在外面


然而,我们可以假设有一种特殊情况。如果光线正好穿过一个交叉点。但请注意,在这种情况下,还将获得2个交点:)

参考相交算法适用于任何闭合多边形,即使是凹多边形或自相交多边形。为了使两个长方体多边形闭合(在同一点开始和结束),必须遍历中间线段两次。这意味着穿过底部的示例光线穿过三条边,因此使用奇偶规则,它位于内部。

op描述的多边形比凹多边形还要多,它是退化的;>实际上,该算法不仅适用于凸多边形,也适用于凹多边形和复杂多边形。我的理解是,复杂多边形是多边形自身相交的多边形。(想象两个堆叠的三角形点对点站立,而不是两个堆叠的正方形)。我还将研究多边形三角剖分,作为一种将复杂多边形分解为一组凸多边形的方法。您将如何跨越3次?如果我的点在顶部正方形中,我画的光线指向上方,我会穿过一次(因此点在内部),但如果我画的光线向下,我会穿过两次:一次穿过中心段,一次穿过底部段。上面添加的图像-查看光线如何穿过一次或两次,这取决于你走的方向?啊,就是这样。。。在这种情况下,边缘明显是“内部”的。请原谅,如果这是一个愚蠢的问题,那么我该如何通过算法测试来确定边缘是否是内部的呢?(我曾想过测试直线的中点,看看它是否在多边形内部,但后来我遇到了一个catch-22,特别是当有多条内部边时)。到目前为止,我的谷歌搜索结果一无所获。在这种情况下,有许多不同的方法可以让事情顺利进行,但它们都关键取决于你如何解释这种情况。更具体地说,如何表示这种“多边形”?使用什么数据结构?您可以有多个内部部分吗?如果是这样的话,内部线段可以相互相交吗?基本上,此时您所拥有的只是一个问题的草图。你还没有完成这个问题的阐述。当问题本身没有得到充分说明时,寻求解决方案还为时过早。