Интересная задача которая возникла пока с 2d игрался.
Определение коллизий 2х спрайтов.
Принадлежность точки прямоугольнику, это элементарно.
а вот столкновение двух прямоугольников как определить ?
придумал вот такое алгоритм.
Идея в том что, разница между двумя крайними точками системы из двух столкнувшихся прямоугольников,будет всегда меньше суммы ширин, двух прямоуоугольников. Если условие выполняется для высоты и ширины, значит есть пересечение.
r=function(x,y,w,h,x1,y1,w1,h1){
var sx=x<x1?x:x1,
sy=y<y1?y:y1,
ex=x+w>x1+w1?x+w:x1+w1,
ey=y+h>y1+h1?y+h:y1+h1;
return ex-sx<w+w1 && ey-sy<h+h1;
//if (ex-sx<w+w1 && ey-sy<h+h1)return true;
//else return false
}
// true
alert(r(
0,0,100,100,
50,50,100,100
));
// false
alert(r(
0,0,100,100,
150,50,100,100
));
// true
alert(r(
51,51,100,100,
50,50,100,100
));
// (один квадрат внутри другого) true
alert(r(
0,0,100,100,
50,50,10,10
));