用于创建直骨架的Java库?

时间:2011-04-12 18:41:54

标签: java algorithm geometry polygon computational-geometry

我有一个带孔的2D多边形作为输入,我需要找到它的直骨架,如图所示:

http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Straight_skeleton_2/exterior_skeleton.png

也许有一个很好的Java库?

如果没有,你能指出我对该算法的良好解释,那么我可以自己实现吗? (我在Google上找不到好的资源)

5 个答案:

答案 0 :(得分:5)

我写了一会儿。不确定它是否足够强大。 https://github.com/twak/campskeleton

(编辑于2018年......)

答案 1 :(得分:3)

答案 2 :(得分:2)

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


据我了解,你有一个(凸?)多边形。从中,您可以减去1个或更多(可能是非凸的)多边形。您希望将结果转换为一组没有孔的多边形。您是否尝试应用额外的规则?

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

如果您可以使用下面显示的细分,则算法非常简单。你能说清楚吗?

Triangularized shape

答案 3 :(得分:2)

您可以使用JTS Topology Suite。它是一个非常强大的库,我已经在许多项目中使用过 - 从来没有直骨架,但它可能是。

答案 4 :(得分:-1)

我可以问你找到直骨架的目的是什么?是个人还是商业?我有兴趣知道你如何用它来解决实时问题?我有一个java库,可以做到这一点。我的算法列在这里http://web.stcloudstate.edu/rsarnath/skeleton/definition.htm