- Построение многоугольника, полученного пересечением двух исходных.
- Построение многоугольника, полученного объединением двух исходных.
- Определение площади произвольного многоугольника.
Билд приложения загружен на simmer.io https://simmer.io/@Ilya_Leontev/topomatic-test-task
Задания 1-2: Файл в проекте: PolygonClippingAlgorithm.cs
Задание 3: Использовалась формула площади Гаусса https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0_%D0%BF%D0%BB%D0%BE%D1%89%D0%B0%D0%B4%D0%B8_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0 Файл в проекте: GeometryUtility.cs метод PolygonArea()
- Алгоритм поддерживает Union и Intersection операции, но так же может считать и другие операции, такие как Difference, Xor, при дописании фильтра (пример в конце PolygonClippingAlgorithm.cs)
- Обрабатывает случаи с совпадающими сегментами (идеальное перекрытие, ребро на ребре, общие вершины, один внутри другого и т.д.)
- Касание вершины одного полгона о ребро или вершину другого полигона считается за пересечение
- Ввод вершин может быть как по часовой, так и против часовой стрелки
- При выборе опции Intersection, меньший полигон внутри большего полигона не является пересечением
- Для визуализации использован движок Unity