我们有一个线段 L 由两个点从多边形定义,多边形 P 由4个或更多点定义,我需要一个算法确定 L 是否在 P 内?
编辑:线段必须完全在多边形内部,如果只是部分它将被定义为外部。
例如,如下图所示:
更多例子:
答案 0 :(得分:2)
第1步:L是否越过P的任何边缘?如果是,则L不在P内。如果否,请参阅步骤2
第2步:L的中间M在哪里?如果M在P内,则L在P内。
以防万一: http://en.wikipedia.org/wiki/Point_in_polygon
编辑,更多解释:有两种情况:
答案 1 :(得分:-2)
如果线段完全在多边形内部,则线的两侧将至少有一个多边形顶点。 请参阅How to tell whether a point is to the right or left side of a line以了解要点在哪一侧。
<强>更新强> 然而,反之亦然可能并非如此。应该从线段的一端开始按顺序遍历所有多边形顶点。从线段开始到结束遍历的所有顶点应位于一侧,其余顶点应位于另一侧。
如果线段与多边形的一个边缘重合,则上述情况不会成立。在这种情况下,线的一侧将没有顶点。但是,在这种情况下,线条也不完全位于多边形内部。