В настоящее время я разрабатываю приложение, которое создает полигоны из линий, и у меня возникла небольшая проблема:
У меня есть набор точек, представляющих линию. Я хотел бы создать многоугольник, который отображает линию определенной ширины (например, для улицы). У меня есть несколько идей, как рассчитать точки внешнего многоугольника, но я думаю, что они слишком сложные ...
Моя лучшая идея была изображена ниже: каждая точка линии должна быть спроецирована как минимум на две точки: обе точки должны быть на 90 ° к следующему отрезку линии и иметь расстояние, равное половине предпочтительной ширины многоугольника.
Это хорошо работает, как вы можете видеть в конечных и начальных точках изображенного многоугольника. Теперь сложная часть: с помощью этого метода в углу каждая точка получает четыре очка. Но эти точки не верны для внешнего многоугольника, потому что они в форме. Линии пересеклись и создали уродливый многоугольник.
Как я могу найти правильные точки для такого многоугольника? Я думаю, что мой метод слишком сложен для решения этой проблемы.
Кто-нибудь может мне помочь с этой (вероятно, очень распространенной) проблемой?
Информация: Я отметил это с помощью openstreetmap
, потому что рендерер, как Mapnik, тоже имеет эту проблему.