我有一个带孔的二维多边形作为输入,我需要找到它的直线骨架,就像图片中的那样:
(来源: cgal.org)
也许有一个很好的Java库可以做到这一点?
如果没有,你能指导我如何实现该算法吗?(我在Google上没有找到好的资源)
![](https://istack.dev59.com/picuR.webp)
如果没有,你能指导我如何实现该算法吗?(我在Google上没有找到好的资源)
我之前写过这个东西,不确定它是否足够健壮。 https://github.com/twak/campskeleton
(已编辑至2018年...)
编辑: 啊,我看到“Straight Skeleton”是一个技术术语。维基百科文章引用了几个算法。你看过那些吗?
根据我的理解,您有一个(凸?)多边形。从中减去一个或多个(潜在非凸)多边形。你想把结果变成没有孔洞的多边形集。你是否正在尝试应用其他规则?
从您提供的示例中我很难得出一组规则。外部多边形是非凸的,因此似乎您并不想找到一个凸集来表示结果(这是一项相对常见的任务)。
如果您可以使用下面显示的拆分方法,算法就非常简单了。您能否澄清?
我可以问一下您寻找直线骨架的目的是什么吗?是个人还是商业用途?我很想知道您如何使用它来解决实时问题?我有一个可以做到这一点的Java库。我的算法在这里列出http://web.stcloudstate.edu/rsarnath/skeleton/definition.htm