Sma*_*tK8 5 c# algorithm graph outline
我在互联网上搜索过,也许我遗漏了一些正确的关键字,但我没有找到类似的东西。我只找到了不完全是图形的折线(或只是线)。我想生成一个图形轮廓(半径r),如图所示。有什么已经可用的吗?我想避免重新发明轮子可以这么说。

如果有人可以暗示我某些事情或至少是一些基本原则如何去做,那将是很棒的。否则我当然会自己“发明”一个。
最好在 C# 中。
更新:我需要计算轮廓多边形,而不仅仅是在视觉上绘制它。绿点表示生成的多边形。“内部”孔也被完全忽略。只有一个轮廓多边形就足够了。
更新 2:更好的图片来展示一些更极端的情况。此外,图的边缘永远不会重叠,因此无需对此进行调整。
更新 3:图片再次更新以反映斜面连接。
首先,对于从 A 点到 B 点的每个“线段”,生成其矩形(可以这么说,所有 4 个点都作为“路径”)。然后搜索两个重叠的矩形并将它们合并:
\n\n合并有点复杂,其想法是:首先计算所有 8 条线的角度(例如,如果矩形是顺时针遍历的)。然后遍历一个矩形,直到第一个线-线-交点,检查哪个方向是“外部”的角度,然后沿着第二个矩形的交叉线移动......直到再次到达起点=>现在你遍历了两者在一起的形状(并希望将其保存在某个地方)。
\n\n合并直到只剩下一大块(或多个不重叠的块)。理论上,从任意一点开始,你都可以遍历整个形状,但是还有另一个问题:可能有洞。
\n如果一个形状有两个或多个不相交的点集(其中第 2 组中的任何点都无法从第 1 组到达,反之亦然),则除了一个不相交路径之外的所有路径都是孔。获得真实外边界的一个简单方法是搜索极值,即。具有最大或最小 X 或 Y 坐标的点(仅 4 种组合之一就足够了)。该点肯定是外边界的一部分。