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