Любая точка (включая мышь): используйте формулу для расчета, находится ли точка внутри или снаружи многоугольника.следующий скрипт (хотя и не от меня) решает это:
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/math/is-point-in-poly [rev. #0]
function isPointInPoly(poly, pt){
for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y))
&& (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x)
&& (c = !c);
return c;
}
на своей странице, Джонас также приводит пример того, как его использовать.в основном, poly - это массив объектов, содержащий точки многоугольника, а pt - это объект с точкой, которую вы хотите проверить:
var polygon = [
{x: 0, y: 0},
{x: 0, y: length},
{x: length, y: 10},
{x: -length, y: -10},
{x: 0, y: -length},
{x: 0, y: 0}
];
var testpoint= {x: 1, y:2};
if(isPointInPoly(polygon,testpoint)) { /* do something */ }
если это для позиционирования мыши, вы должны связать все это с mousemove, что снова можетбыть включенным / отключенным при mouseenter / mouseleave - все события узла canvas