Всем привет еще раз
Вот раздобыл функцию пересечения линии и квадрата, собираюсь использовать я их для определения столкновения пули и врага в игре. До этого делал не совсем такие игры, а так как с математикой туго, то прошу совета, вот сама функция:

Код AS3:
public static function InterLineSqr(p1, p2, p3, r) {
var res = [];
var x1 = p3.x-r;
var x2 = p3.x+r;
var y1 = p3.y-r;
var y2 = p3.y+r;
var dx = p1.x-p2.x;
var dy = p1.y-p2.y;
var dd = dx*dx+dy*dy;
//
//if ((p1.x>x1 && p1.x<x2) || (p2.x>x1 && p2.x<x2) || (p1.x<x1 && p2.x>x2) || (p2.x<x1 && p1.x>x2) || (p1.y>y1 && p1.y<y2) || (p2.y>y1 && p2.y<y2) || (p1.y<x1 && p2.y>y2) || (p2.y<x1 && p1.y>y2)) {
//if ((p1.y>y1 && p1.y<y2) || (p2.y>y1 && p2.y<y2) || (p1.y<x1 && p2.y>y2) || (p2.y<x1 && p1.y>y2)) {
var inter;
inter = InterLineLine(p1, p2, {x:x1, y:y1}, {x:x1, y:y2});
if (!(inter<0)) {
res.push(inter);
}
inter = InterLineLine(p1, p2, {x:x1, y:y1}, {x:x2, y:y1});
if (!(inter<0)) {
res.push(inter);
}
inter = InterLineLine(p1, p2, {x:x2, y:y2}, {x:x2, y:y1});
if (!(inter<0)) {
res.push(inter);
}
inter = InterLineLine(p1, p2, {x:x2, y:y2}, {x:x1, y:y2});
if (!(inter<0)) {
res.push(inter);
}
//}
//}
return res;
}
насколько я понимаю p1 и p2 - это начало и конец линии (точки), а что такое p3 и r? И как её использовать если можно подробнее? Допустим имеется массив с врагами vragi и герой который стреляет, как я понимаю после нажатия кнопки мыши должны определяться точки линии (пуля типа) и проверяться со всем массивом не пересеклась ли линия с квадратом.. но вот как это в коде выглядит не совсем представляю. спасибо
