我想知道奇偶算法如何识别复杂多边形中的点。
我现在知道的是,它会从最左边到该点进行水平搜索,并计算触摸的边缘数量。
但是,如果接触的边位于 2 条边的交集中,会发生什么情况?它是怎么算的?
多边形示例:
我喜欢的方法(适用于整数和浮点坐标)是:
对于非水平线段,每个线段包括其最底部的点,但不包括其最顶部的点。
根本不将水平线段包含在奇偶计数中。
这确保了多边形内部和外部的每个点的偶数和奇数计数都是正确的,但对于边界上的点并不完全一致。 如果这对您很重要,您可能需要添加一条规则,即实际位于线段上的任何点都包含在多边形中。
我们必须查看在该顶点相交的多边形的两条线段的另一端点。如果这些点位于构造线的同一侧(图片上的第一个选项),则交点算作偶数个交点。但是,如果它们位于构造线的另一侧(图片上有 2 个选项。),则交点算作单个交点。