基本思想:从指定点出发,向无穷远处发出一条射线,计算这条射线和多变的交点个数,若交点数为偶数(包括0),则说明在该点在多边形外;否在该点在多边形内。
此处,为了方便我们叙述,我们假设射线是水平向右发射的。为了计算射线与多边形所有边的交点,我们需要遍历多边形所有的边,判断是否存在交点。这样的计算量非常大,以下给出几种可以减少计算量的方法。
一、构建安全矩形
如图所示,构建出红色的矩形,则所有在红色矩形外的所有点都可以直接判断为不在多边形内部。具体方法是:遍历多边形所有的顶点,统计出最大最小的x、y值,这样就构建出了安全矩形四个顶点的坐标值。
二、线段的安全区域
如图所示,对于线段AB,L1上方,L2下方&