Java 将线段列表合并为多边形

Java 将线段列表合并为多边形,java,sorting,line,polygon,Java,Sorting,Line,Polygon,我有一系列无序的线段。线段可以是独立的直线,也可以是多个多边形之一的一部分。我想浏览一下列表,将任何线段合并成一个多边形,并抛出任何不构成闭合多边形的直线 这并不像我一开始想的那么琐碎。这个问题是一个已经解决的经典问题吗?将每条线视为一条由起点和终点定义的路径。在二维空间中,这是(x0,y0)和(x1,y1)。将每个点视为图中的一个节点,将线视为图中的一条路径,您的问题本质上是找出图中的所有圆形(闭合)路径 因此,可以通过递归遍历图来解决这个问题。朴素算法的时间复杂度是n*(图中最长路径的长度)

我有一系列无序的线段。线段可以是独立的直线,也可以是多个多边形之一的一部分。我想浏览一下列表,将任何线段合并成一个多边形,并抛出任何不构成闭合多边形的直线


这并不像我一开始想的那么琐碎。这个问题是一个已经解决的经典问题吗?

将每条线视为一条由起点和终点定义的路径。在二维空间中,这是(x0,y0)和(x1,y1)。将每个点视为图中的一个节点,将线视为图中的一条路径,您的问题本质上是找出图中的所有圆形(闭合)路径


因此,可以通过递归遍历图来解决这个问题。朴素算法的时间复杂度是n*(图中最长路径的长度),这肯定小于n^2。我认为有人可以得到一个更好的算法,但想法是一样的。

你在哪方面有困难?找出哪些线有共同点?计算出一组线何时形成一个循环?计算出这个循环是否是一个具有非重叠线的适当多边形?当它们完全相等时,或者是否存在用于比较浮点数的ε“足够接近”因子?我将使用“足够接近”因子。我不担心形状不好的多边形。我只是想把从另一个软件中导出的线路连接起来。但是,可以有多个多边形。所以,我需要浏览一下列表,确保我没有把一个多边形分割成两个不完整的多边形。我需要合并所有多边形,并接受用户定义的任意数量的多边形。我一般理解这些术语,但没有任何图形的实际经验和遍历它们的有效方法(更不用说递归遍历它们了。你能提供参考吗?(书,网站,…)我应该补充一点,我的问题很小,我不必担心一个非常有效的算法。节点数<500。