Определить принадлежность точки заданному выпуклому многоугольнику. На паскаль абс, питон или с++

5 Окт 2019 в 11:42
176 +1
0
Ответы
1

На Pascal:

program PointInPolygon
typ
Point = recor
X, Y: Integer
end
va
Polygon: array of Point
P: Point
N, i, j, Count: Integer
function IsPointInPolygon(P: Point; Polygon: array of Point; N: Integer): Boolean
va
i, j: Integer
Inside: Boolean
begi
Inside := False
j := N - 1
for i := 0 to N - 1 d
begi
if (((Polygon[i].Y <= P.Y) and (P.Y < Polygon[j].Y)) o
((Polygon[j].Y <= P.Y) and (P.Y < Polygon[i].Y))) an
(P.X < (Polygon[j].X - Polygon[i].X) * (P.Y - Polygon[i].Y) / (Polygon[j].Y - Polygon[i].Y) + Polygon[i].X) the
Inside := not Inside
j := i
end
IsPointInPolygon := Inside
end
begi
N := 4
SetLength(Polygon, N)
Polygon[0].X := 1; Polygon[0].Y := 1
Polygon[1].X := 2; Polygon[1].Y := 4
Polygon[2].X := 5; Polygon[2].Y := 5
Polygon[3].X := 4; Polygon[3].Y := 2
P.X := 3
P.Y := 3
if IsPointInPolygon(P, Polygon, N) the
writeln('Точка принадлежит многоугольнику'
els
writeln('Точка не принадлежит многоугольнику')
end.

Данный код определяет принадлежность точки P заданному выпуклому многоугольнику Polygon с помощью алгоритма Ray Casting. Точка считается принадлежащей многоугольнику, если луч, проведенный из этой точки в одном направлении, пересекает границу многоугольника нечетное количество раз.

19 Апр в 14:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 620 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир