Math 如何唯一标识线段?

Math 如何唯一标识线段?,math,graphics,geometry,2d,Math,Graphics,Geometry,2d,我正在解决一个问题,以消除路径集合中的公共线段。许多路径共享同一段 似乎一条2D线条会有某种方式来唯一地标识它自己。像一把钥匙 因此,第[(a,B)、(C,D)]行与第[(C,D)、(a,B]行相同 我能想出的唯一解决办法就是对这些点进行排序 这似乎是数学或图形学中的常见问题,但我想不出解决方案。从数学角度看,这看起来像是一个无向图的问题(与有向图相反) 对点进行排序是处理此问题的一种方法:这是一种简单的方法,可以用一个明确选择的值来表示无序边(选择什么顺序并不重要,只要对所有可能的线段都是一致

我正在解决一个问题,以消除路径集合中的公共线段。许多路径共享同一段

似乎一条2D线条会有某种方式来唯一地标识它自己。像一把钥匙

因此,第[(a,B)、(C,D)]行与第[(C,D)、(a,B]行相同

我能想出的唯一解决办法就是对这些点进行排序


这似乎是数学或图形学中的常见问题,但我想不出解决方案。

从数学角度看,这看起来像是一个无向图的问题(与有向图相反)

对点进行排序是处理此问题的一种方法:这是一种简单的方法,可以用一个明确选择的值来表示无序边(选择什么顺序并不重要,只要对所有可能的线段都是一致的)。您确实需要确保将此排序作为一个不变量进行维护:在错误排序的边上意外滑动可能会导致任何依赖于排序的问题

然而,从数学上讲,无向图通常被定义为具有对称性质的有向图:如果(a,B)是边,那么(B,a)也是边。这意味着另一种方法:确保始终同时存储(A,B)和(B,A)。也许这两个段顺序都可以链接到任何公共数据,并且可能是从另一个访问其中一个的快速方式。(与排序点方法一样,需要将此对称性保持为不变。)

最佳选择取决于您的应用程序。如果您使用段作为键,那么排序方法可能是最好的。然而,有些应用程序更适合对称方法。例如,是一种数据结构,它将每条边表示为两条链接的“半边”,每个方向一条


由于您提到了图形,请注意,双连通边列表通常用于表示三维多面体的边


此外,请注意与定向三角形的相似性:计算机图形学将三角形视为“单面三角形”有很好的实际原因,即绘制从一侧可见的三角形与绘制从另一侧可见的相同三角形是不同的。与半边一样,这种区别由顶点的顺序决定:一侧为顺时针方向,另一侧为逆时针方向。

是否生成这些线段?它们在“完全相同”之前能有多近?