这是使用地图时经常遇到的一般拓扑问题.
决定点是否在任何多边形(矩形,圆形,不规则形状)内的算法如下:
>从正在检查的点构造任何方向上的任何线,直到多边形所在的屏幕区域的边缘
>如果线与奇数个位置处的任何多边形边界相交,则它在该多边形内
>如果线与任何多边形边界相交,则在该多边形之外的偶数个位置.
------------
| |
| o--|------------------- 1 intersection: inside
| |
-------------
------------
| |
o------|-----------|------------------- 2 intersections: outside
| |
-------------
笔记:
>线的方向无关紧要>如果在屏幕一侧切割多边形而没有关闭,则无法工作>如果多边形切割自身,则算法可能会失败恰好通过切割点(例如图8中的切入点)单个多边形,其中线条正好穿过上下的位置零件连接图连接)