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