Есть ли алгоритм, который может дать мне площадь неперекрывающихся частей двух произвольных многоугольников? Я не смог найти ничего обобщающего для двух произвольных многоугольников.

0
pete 7 Янв 2020 в 22:43

2 ответа

Лучший ответ

Существует алгоритм обрезки Vatti, который работает с произвольными полигонами и позволяет найти полигон обрезки "xor" ( с). Затем вы можете рассчитать площадь результата.

enter image description here

Этот алгоритм используется в библиотеке Clipper (opensource, имеет привязки к некоторым языкам программирования)

2
MBo 8 Янв 2020 в 02:50

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

Многоугольник пересечения должен быть вычислен явно, например, с использованием алгоритма отсечения Weiler & Atherton. https://en.wikipedia.org/wiki/Weiler%E2%80% 93Atherton_clipping_algorithm.

Остерегайтесь, что реализация не является тривиальной.

0
Yves Daoust 8 Янв 2020 в 16:20