Решите задачу на питоне срочно
Капитан Джек Воробей и его команда путешествуют на Черной Жемчужине по Карибскому морю. Чтобы найти корабль-призрак, им нужно попасть в проклятый многоугольник. Известна текущая координата корабля и координаты вершин многоугольника. Помогите Джеку определить, на месте ли они. Входные данные Координата Черной Жемчужины x,y, Координаты точек проклятого многоугольника Выходные данные YES – если корабль в многоугольнике NO – если нет
По дате
По рейтингу
12345678910111213141516171819202122232425262728
def is_ship_in_polygon(ship_coords, polygon_coords):
# Распаковываем координаты корабля
ship_x, ship_y = ship_coords
# Инициализируем переменную для подсчета пересечений
intersect_count = 0
# Перебираем пары вершин многоугольника
for i in range(len(polygon_coords)):
vertex1_x, vertex1_y = polygon_coords[i]
vertex2_x, vertex2_y = polygon_coords[(i + 1) % len(polygon_coords)]
# Проверяем, пересекается ли отрезок многоугольника с горизонтальной линией корабля
if ((vertex1_y > ship_y) != (vertex2_y > ship_y)) and (ship_x < (vertex2_x - vertex1_x) * (ship_y - vertex1_y) / (vertex2_y - vertex1_y) + vertex1_x):
intersect_count += 1
# Если количество пересечений нечетное, корабль внутри многоугольника
if intersect_count % 2 == 1:
return "YES"
else:
return "NO"
# Пример использования
ship_coords = (3, 4)
polygon_coords = [(1, 1), (2, 3), (4, 2), (3, 0)]
result = is_ship_in_polygon(ship_coords, polygon_coords)
print(result)