我有一个带孔的2D多边形作为输入,我需要找到它的直骨架,如图所示:
http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Straight_skeleton_2/exterior_skeleton.png
也许有一个很好的Java库?
如果没有,你能指出我对该算法的良好解释,那么我可以自己实现吗? (我在Google上找不到好的资源)
答案 0 :(得分:5)
我写了一会儿。不确定它是否足够强大。 https://github.com/twak/campskeleton
(编辑于2018年......)
答案 1 :(得分:3)
答案 2 :(得分:2)
编辑: 啊。我看到“Straight Skeleton”是一个技术术语。维基百科文章引用了几种算法。你看过那些吗?
据我了解,你有一个(凸?)多边形。从中,您可以减去1个或更多(可能是非凸的)多边形。您希望将结果转换为一组没有孔的多边形。您是否尝试应用额外的规则?
我很难从你提供的示例中提出一套规则。外多边形是非凸的;因此,您似乎并未尝试找到一个凸集来表示结果(这是一项相对常见的任务)。
如果您可以使用下面显示的细分,则算法非常简单。你能说清楚吗?
答案 3 :(得分:2)
您可以使用JTS Topology Suite。它是一个非常强大的库,我已经在许多项目中使用过 - 从来没有直骨架,但它可能是。
答案 4 :(得分:-1)
我可以问你找到直骨架的目的是什么?是个人还是商业?我有兴趣知道你如何用它来解决实时问题?我有一个java库,可以做到这一点。我的算法列在这里http://web.stcloudstate.edu/rsarnath/skeleton/definition.htm