Что такое площадь многоугольника с самопересечениями?
Способ 1.
Вам придётся все точки пересечения границ многоугольников. Без этого никак. Так как вы ограничили число вершин константой, то можно это проделать просто попарно пересекая все отрезки. После того как вы это проделали вы можете объединить границы в общий планарный граф. В этом графе вам надо будет выделить/разметить все грани. У каждой грани вы можете вычислить площадь (возможно со знаком) - теперь грань простой многоугольник. Если вы сумеете ответить на вопрос в начале моего сообщения, то вы сумеете правильно сложить/вычесть/проигнорировать площади всех граней графа чтобы получить площадь пересечения.
Способ 2.
Ищем все пересечения, как в способе 1. Теперь учимся по любой прямой искать её пересечение с пересечением многоугольников (если вы это умеете, то вы умеете отвечать на вопрос в начале сообщения). Переходим к заметанию: все вершины многоугольников и все точки пересечения сортируем по
. Рассмотрим полосу между двумя вершинами соседними по
. Её пересечение с пересечением многоугольников - комплект трапеций. Основания трапеций вам выдаёт алгоритм пересечения с прямой. У все трапеций в полосе считаете площадь. Все площади для всех полос складываете.
Способ 3.
Триангулируете оба многоугольника (это сравнительно просто для простых многоугольников, если вы не спешите). Попарно пересекаете все треугольники. Складываете площади пересечений.
И так далее...
Вряд ли вам подскажут простой способ. Все способы сложны, к сожалению.
-- 03.04.2016, 21:18 --Ищите Препарата-Шеймос.