放射線アルゴリズムのjs実現
2010 ワード
放射線アルゴリズムのjs実現
/**
* , (pointX,pointY) polygon
**/
function isInPolygon(pointX, pointY, polygon) {
var count = 0;
for(var i = 0; i < polygon.length; i++) {
if(pointX < max(polygon[i][0], polygon[i][2])) {
if(min(polygon[i][1], polygon[i][3]) < pointY &&
pointY <= max(polygon[i][1], polygon[i][3])) {
if(pointX > min(polygon[i][0], polygon[i][2])) {
var k1 = (polygon[i][3] - polygon[i][1]) / (polygon[i][2] - polygon[i][0]);
var b1 = polygon[i][1] - k1 * polygon[i][0];
var b2 = pointY;
var x0 = (b2 - b1) / k1;
if(x0 > pointX) {
count++;
}
} else {
count++;
}
}
}
};
return count % 2 != 0;
}