inPolygonInner method
返回一个点是否在一个多边形区域内
Implementation
bool inPolygonInner(List<Offset> mPoints) {
int nCross = 0;
for (int i = 0; i < mPoints.length; i++) {
Offset p1 = mPoints[i];
Offset p2 = mPoints[((i + 1) % mPoints.length)];
if (p1.dy == p2.dy) {
continue;
}
if (dy < min(p1.dy, p2.dy)) {
continue;
}
if (dy >= max(p1.dy, p2.dy)) {
continue;
}
double x = (dy - p1.dy) * (p2.dx - p1.dx) / (p2.dy - p1.dy) + p1.dx;
if (x > dx) {
//只统计单边交点
nCross++;
}
}
return (nCross % 2 == 1);
}