История изменений
Исправление linuhs_user, (текущая версия) :
Ну тебе нужно записать в какой нибудь массив точки углов карты по периметру, и получится как бы контур карты, и проверяй коллизию EntityToMapLine, к примеру таким алгоритмом.
struct Point {
double x;
double y;
};
struct Line {
struct Point a;
struct Point b;
};
double
line_len(struct Point a, struct Point b)
{
return(sqrt(pow(a.x - b.x) + pow(a.y - b.y));
}
bool
collision_point_to_line(struct Point p, struct Line line)
{
if(line_len(p, line.a) + line_len(p, line.b) == line_len(line.a, line.b))
return(true);
else
return(false);
}
Исходная версия linuhs_user, :
Ну тебе нужно записать в какой нибудь массив точки углов карты по периметру, и получится как бы контур карты, и проверяй коллизию EntityToMapLine, к примеру таким алгоритмом.
bool
collision_point_to_line(struct Point p, struct Line line)
{
double len0, len1, line_len;
len0 = sqrt(pow(p.x - line.x1) + pow(p.y - line.y1));
len1 = sqrt(pow(p.x - line.x2) + pow(p.y - line.y2));
line_len = sqrt(pow(line.x1 - line.x2) + pow(line.y1 - line.y2));
if(len0 + len1 == line_len)
return(true);
else
return(false);
}