gpt4 book ai didi

c# - 使用缓冲区从折线获取多边形

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:52:13 25 4
gpt4 key购买 nike

我正在 C# 中寻找一种算法,该算法将采用折线(即带有节点/角的线),并在给定宽度/缓冲区的情况下生成多边形。换句话说,如果您描绘一条具有一定宽度的多段线,我想获得适合该多段线的边界多边形。

折线只是我想输入到算法中的 (x,y) 坐标列表,以及一定的宽度,并让它吐出描述节点的 (x,y) 坐标列表/多边形的角。

所以像这样:

point[] PolylineToPolygon(Point[] points, double width)
{
// algorithm
}

void Convert()
{
Point[] linePoints = new Point[] { new Point { X = -25.125675, Y = 28.434342 }, new Point { X = -26.232687, Y = 29.958363 }, new Point { X = -24.554377, Y = 26.445767 } };
point[] polygonPoints = PolylineToPolygon(linePoints, 0.003);
}

根据我的阅读,我需要使用 Minkowski 算法,但我找不到 C# 中的实现,我也不确定要使用哪种 Minkowski 算法...

如有任何帮助或指点,我们将不胜感激!

最佳答案

您可以使用 lib NetTopologySuite。参见 github.com/NetTopologySuite/NetTopologySuite在这里您可以缓冲折线,生成的几何图形将是一个多边形。你的代码应该是这样的:

LineString ls = new LineString(new Coordinate[] { new Coordinate { X = -25.125675, Y = 28.434342 }, new Coordinate { X = -26.232687, Y = 29.958363 }, new Coordinate { X = -24.554377, Y = 26.445767 } }); 
Polygon result = ls.Buffer(0.003) as Polygon;

顺便说一句:这是 Minkowski 和的一个实现。

关于c# - 使用缓冲区从折线获取多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47043052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com