Нет необходимости в сложных алгоритмах, я смог добиться этого с помощью метода isPointInPath () html canvas.
http://www.w3schools.com/tags/canvas_ispointinpath.asp
Создание элемента canvas.Нарисуйте многоугольник с несколькими конечными точками, используя методы moveTo (), lineTo ().Убедитесь, что точка (x, y) лежит внутри многоугольника, используя метод isPointInPath ().
<canvas id="canvas"></canvas>
//x,y are coordinate of the point that needs to be tested
//coordinates contains all endpoint of a polygon in format of x1,y1,x2,y2,x3,y3....
function isPointInPolygon(x, y, coordinates) {
var ctx = canvas.getContext("2d");
var coords = coordinates.split(',');
if (coords != null && coords.length > 4) {
ctx.beginPath();
ctx.moveTo(coords[0], coords[1]);
for (j = 2; j < coords.length; j++) {
ctx.lineTo(coords[j], coords[j + 1]);
j++;
}
ctx.closePath();
if (ctx.isPointInPath(x, y))
return true;
else
return false;
}
return false;
}