gpt4 book ai didi

c# - 有生成图形轮廓的算法吗?

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

我已经在 Internet 上进行了搜索,也许我遗漏了一些正确的关键字,但我设法找到了这样的东西。我只找到了不完全是图形的折线(或只是线)。我想生成如图所示的图形轮廓(半径 r)。有没有可用的东西?可以这么说,我想避免重新发明轮子。

enter image description here

如果有人能在某些事情上或至少在一些基本原则上提示我如何去做,那就太好了。否则我当然会自己“发明”一个。

最好在 C# 中。

更新:我需要计算轮廓多边形,而不仅仅是视觉绘制。绿点代表生成的多边形。 “内部”孔也被完全忽略。只有一个轮廓多边形应该足够了。

更新 2:用更好的图片来展示一些更极端的案例。此外,图形的边缘永远不会重叠,因此无需为此进行调整。

更新 3:图片再次更新以反射(reflect)斜角连接。

最佳答案

首先,对于从 A 点到 B 点的每个“线段”,生成到它的矩形(可以说所有 4 个点都作为“路径”)。然后搜索两个重叠的矩形并合并它们:

合并有点复杂,想法:从计算所有 8 条线的角度开始(例如,如果矩形顺时针遍历)。然后遍历一个矩形直到第一个线-线-交点,检查方向是“外部”的角度,然后沿着第二个矩形的交叉线移动......直到你再次到达起点=>现在你遍历了两者的形状(并希望将其保存在某个地方)。

合并直到只剩下一大块(或多个不重叠的 block )。理论上,从任意一点开始,都可以遍历整个形状,但还有一个问题:可能会出现空洞。
如果一个形状有两个或多个分离点集(其中第 2 组中的点无法从第 1 组到达,反之亦然),则除了一个分离路径外,所有路径都是一个洞。获得真实外边界的一种简单方法是搜索极值,即。具有最大或最小 X 或 Y 坐标的点(只有 4 种组合中的一种就足够了)。这个点肯定是外边界的一部分。

关于c# - 有生成图形轮廓的算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28268650/

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