решение, не зависящее от языка:
ПОДАРОК: многоугольник ВСЕГДА может состоять из n-2 треугольников, которые не перекрываются (n = количество точек ИЛИ сторон).1 треугольник = 3-сторонний многоугольник = 1 треугольник;1 квадрат = 4 односторонних многоугольника = 2 треугольника;etc ad nauseam QED
, поэтому многоугольник можно уменьшить, "отрубив" треугольники, и общая площадь будет суммой площадей этих треугольников.попробуйте это с листом бумаги и ножницами, лучше всего, если вы сможете визуализировать процесс, прежде чем следовать.
, если вы возьмете любые 3 последовательных точки на пути полигонов и создадите треугольник с этими точками, у вас будетодин и только один из трех возможных сценариев:
- результирующий треугольник полностью находится внутри исходного многоугольника
- результирующий треугольник находится полностью вне исходного многоугольника
- результирующий треугольник частично содержится воригинальный полигон
нас интересуют только случаи, попадающие в первый вариант (полностью содержится).
каждый раз, когда мы находим один из них, мы отсекаем его, вычисляем его площадь (здесь легко объяснить, формулу не будем объяснять) и создаем новый многоугольник с одной меньшей стороной (эквивалентно многоугольнику с отрезанным треугольником),пока у нас не осталось только одного треугольника.
как реализовать это программно:
создать массив точек.запустить массив, составив треугольники из точек x, x + 1 и x + 2.преобразовать каждый треугольник из фигуры в область и пересечь его с областью, созданной из многоугольника.Если результирующее пересечение идентично исходному треугольнику, то указанный треугольник полностью содержится в многоугольнике и может быть отрезан.удалите x + 1 из массива и начните снова с x = 0.в противном случае перейдите к следующей точке x + 1 в массиве.
Кроме того, если вы хотите интегрироваться с картографированием и начинаете с геопоинтов, вы должны конвертировать из геопоинт в скриншоты.это требует принятия решения о моделировании и формуле для формы земли (хотя мы склонны думать о земле как о сфере, на самом деле это неправильный овоид (яйцевидная форма) с вмятинами. Существует множество моделей для дальнейшей вики.