[0003] 关于多边形的点包容性判断的工作很多,基本可分为两类:一类是依靠计算某些参数得到判定结果。例如经典的射线法(ray-crossing) (Foley JD, van Dam A, FeinerSK, Hughes JF. Computer Graphics-Principles and Practice. 2nd ed. Reading, MA :Addison-ffesley. 1990.),就是过待测点向某方向作一条射线,计算该射线与多边形的边的交点个数来进行判定。若有奇数个交点,则该点位于多边形内;否则位于多边形外。这种方法简单直观,可处理任意多边形,通常被用作与其他算法对比的基准算法。其它的还有基于角度之和的算法(Hormann K, Agathos A. The point in polygon problem for arbitrarypolygons. Computational Geometry :Theory and Applications 2001 ;20 :131-144.)、基于三角形操作的算法(Feito FR,Torres JC. Inclusion test for general polyhedra.Computers & Graphics 1997 ;21 (I) :23-30.)等。这类算法的实现较为简单,但需要进行逐边操作,计算时间复杂度均为O(N),这里N为多边形的边数。
[0004] 另一类则是通过将多边形分解为一些简单的几何单元,建立某种辅助结构来加速判定操作,如梯形法(Borut Zalik, Gordon J. Clapworthy, Auniversal trapezoidationalgorithm for planar polygons. Computers & Graphics 23(1999) :253-263.)、网格法(Zalik B, Kolingerova A cell-based point-in-polygon algorithm suitable forlarge sets of points.Computers &Geosciences 2001;27:1135-1145。和 Sheng Yang,Jun-Hai Yong,Jiaguang Sun,Hejin Gu,Jean-Claude Paul. A point-in-polygon methodbased on a quasi-closest point.Computers &Geosciences 36(2010) :205-213.)、分层法(Wencheng Wang, Jing Li,Enhua Wu. 2D point-in-po lygon test by classifyingedges into layers. Computers & Graphics 29(2005) :427-439.)、凸剖分法(JingLi,Wencheng Wang, Enhua Wu. Point-in-Polygon Tests by Convex Decomposition.Computers & Graphics 31 (2007) :636-648)、层次三角形(Juan J. Jimenez, FranciscoR.Feitoa, Rafael J. Seguraa. A new hierarchical triangle-based point-in-polygondata structure. Computers & Geosciences 35(2009) :1843-1853.)等。这类算法虽然能提高检测计算的效率,但其预计算的开销一般比较大。一般而言,它们比较适合于对同一多边形进行多次检测的应用。