Я создаю 2D-игру, используя библиотеку allegro, и мне нужно создать многоугольные территории на карте, на которые игрок может нажимать, чтобы перемещать свои юниты.
Я вынужден использовать какую-то точку в алгоритме обнаружения многоугольника или есть более простое решение с использованием уже нарисованного многоугольника?
Пока мне удалось нарисовать многоугольник, такой как:
ALLEGRO_VERTEX v[] =
{
{ .x = 0, .y = 0, .z = 0, .color = al_map_rgb_f(1, 0, 0) },
{ .x = 0, .y = 48, .z = 0, .color = al_map_rgb_f(1, 0, 0) },
{ .x = 32, .y = 64, .z = 0, .color = al_map_rgb_f(1, 0, 0) },
{ .x = 80, .y = 32, .z = 0, .color = al_map_rgb_f(1, 0, 0) },
{ .x = 112, .y = 0, .z = 0, .color = al_map_rgb_f(1, 0, 0) }
};
al_draw_prim(v, NULL, NULL, 0, 5, ALLEGRO_PRIM_TRIANGLE_FAN);
РЕДАКТИРОВАТЬ: Хорошо, я подумал, что могу определить, находится ли мышь в многоугольнике, используя этот алгоритм , но я чувствую, что это неправильный способ сделать это.Мне все еще нужно вызывать функцию для каждого другого многоугольника, это не правильно.