js
function isPolygonContainsPoint(mPoints, point) {
var nCross = 0;
for (var i = 0; i < mPoints.length; i++) {
var p1 = mPoints.get(i);
var p2 = mPoints.get((i + 1) % mPoints.length);
if (p1.y == p2.y)
continue;
if (point.y < Math.min(p1.y, p2.y))
continue;
if (point.y >= Math.max(p1.y, p2.y))
continue;
var x = (point.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;
if (x > point.x)
nCross++;
}
return (nCross % 2 == 1);
}