用于创建直线骨架的Java库?

6
我有一个带孔的二维多边形作为输入,我需要找到它的直线骨架,就像图片中的那样: (来源: cgal.org) 也许有一个很好的Java库可以做到这一点?
如果没有,你能指导我如何实现该算法吗?(我在Google上没有找到好的资源)
5个回答

5

不错的代码。但我注意到一个漏洞 - 有时似乎骨架会跳过一段。 - Rogach
我已经尝试使用你的库,它非常棒!现在我只需要找到一种从面部提取骨架线的方法。 :) - Rogach


2

您可以尝试使用JTS拓扑套件。这是一款非常强大的库,我在许多项目中都曾使用过,虽然从未用于直线骨架,但可能有可能。


0

编辑: 啊,我看到“Straight Skeleton”是一个技术术语。维基百科文章引用了几个算法。你看过那些吗?


根据我的理解,您有一个(凸?)多边形。从中减去一个或多个(潜在非凸)多边形。你想把结果变成没有孔洞的多边形集。你是否正在尝试应用其他规则?

从您提供的示例中我很难得出一组规则。外部多边形是非凸的,因此似乎您并不想找到一个凸集来表示结果(这是一项相对常见的任务)。

如果您可以使用下面显示的拆分方法,算法就非常简单了。您能否澄清?

Triangularized shape


-2

3
商业。在我的情况下,我实际上是在寻求一种“稀疏”多边形的方法。直线骨架看起来不错,但速度太慢了——我需要在弱机器上实时获得由许多万个点组成的复杂多边形的“中心线”(<1秒)。所以最后,我选择创建多边形的受限德劳内三角剖分,并连接三角形的中心——这给了我一个相当好的“中心线”近似值。 - Rogach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接