Получить вогнутый корпус в mapKit

Используя Swift и apple mapKit, я бы хотел вычислить вогнутый корпус по GPS-координатам. У меня есть массив CLLocation (широта, долгота), определяющий полилинию. Для геозоны маршрута я рассчитал для каждой 2d точки полилинии все возможные широты и долготы с расстоянием n метров. На данный момент я хотел бы рассчитать вогнутый корпус этого набора точек. Я не могу найти информацию о том, как рассчитать вогнутый корпус из GPS-координат. Кто-нибудь может предложить мне учебник?

2 ответа

Этот документ должен быть полезен для вас. Я использовал алгоритм из этой статьи для реализации своей библиотеки hull.js.

Также вы можете триангулировать свою форму с помощью триангуляции Делоне, а затем удалять граничные ребра, как здесь.

Я никогда не слышал термин "вогнутые корпуса", пока не прочитал твой вопрос, поэтому погуглил его. Я нашел ссылки на несколько алгоритмов для вогнутых корпусов.

Кажется, нет единого решения. Вы должны решить, хотите ли вы более гладкий корпус или корпус с наименьшей внутренней площадью, или где-то посередине.

Если все точки, с которыми вы работаете, находятся в пределах 100 км друг от друга или около того, вы можете упростить задачу и преобразовать свои широты / долготы в декартовы координаты. Все, что вам нужно сделать, это вычислить расстояние между градусами долготы на текущей широте.

Как только вы конвертируете свои точки в декартовы координаты, это становится прямой проблемой вогнутой оболочки.

Если вы имеете дело с большими регионами и хотите учесть искривление Земли, у вас гораздо более сложная проблема.

Другие вопросы по тегам