基本流程和思想
- 首先根据已知给定多边形边界顶点集求得其最小x值Xmin、最小y值Ymin、最大x值Xmax和最大y值Ymax,根据这4个值可以确定包含该不规则多边形的水平放置的最小矩形,在此前提下,输入一个任意位置的测试点(x_test,y_test),判断该点是否在矩形中,如果不在这个矩形中,那一定不被包含在多边形里,如果在矩形里,执行下一步操作进行进一步的判断。判断的逻辑也很简单:如果Xmin<x_test<Xmax && Ymin<y_test<Ymax,则点(x_test,y_test)在矩形内,反之则不在。
- 进一步的判断方法
代码部分转自reference: 核心部分的代码来源
我的理解
可以看到,这段代码基于一个主要的思想:以测试点(test_x,test_y)为起始点做水平射线,,看与边界有多少个交点,如果交点的个数为奇数,则该点在多边形内,如果为偶数,则在多边形外。(