Создайте многоугольник вокруг полилинии, как буфер
Автор вопроса: eNepperОтветов: 3
Я осмотрелся, чтобы найти пример того, как взять полилинию и создать буфер вокруг нее, чтобы в итоге я получил многоугольник.
Пока я обнаружил, что для этого мне нужны суммы Минковского, но я не могу понять необработанный алгоритм и перевести его в код.
Я бы предпочел пример на C# или пошаговое руководство по алгоритму.
вам нужен выпуклый многоугольник или просто многоугольник? Saeed Amiri 22.11.2011
Мне не нужен выпуклый многоугольник. eNepper 22.11.2011
Можно ли использовать GDI+? Если да, то GraphicPath.Widen+(OutLine) + GetPathData MBo 22.11.2011
Также могут работать классы 2D-геометрии, например получение PathGeometry с помощью GetWidenedPathGeometry msdn.microsoft .com/en-us/library/ms615692.aspx PeskyGnat 22.11.2011
Вы можете использовать функцию OffsetPolygons() в библиотеке Clipper, но сначала вам нужно преобразовать полилинию в многоугольник. Сделайте это, добавив к полилинии обратную копию ломаной. Но поскольку повторяющиеся вершины не допускаются, обратная копия должна исключать первую и последнюю вершины: v1,v2,...,vn, v(n-1),...,v2.
Ответ 2 · рейтинг 3 · PeskyGnat
Вот пример того, как сделать что-то подобное с 2D-объектами, уже доступными в .NET Framework, на основе этой ссылки
Вы пробовали использовать библиотеку Dot Spatial от Codeplex?
http://dotspatial.codeplex.com/
Это использует Geos и Proj4 внутри, которые уже содержат все необходимые вам функции (большинство мировых ГИС-серверов и продуктов построены на этих двух кодовых базах!)