Algorithm 防止线重叠

Algorithm 防止线重叠,algorithm,line,path-finding,Algorithm,Line,Path Finding,想象一个GPS导航系统,它的线路连接不同的位置。这些线位于通过多个点的道路上(始终笔直,从不弯曲)。下面显示了一个简单的表示 现在有可能是线重叠了。重叠的线必须放置在与现有线相邻的完整位置。我怎样才能达到这个效果 我如何构建一个系统,使线与重叠的线保持相邻,并且永不交叉 有意- 无意- 只要红线不与自身相交,定义线的“左”方向,相对于其方向,可以使用线的法线并拾取边。然后将该法线的因子添加到原始直线的每个端点,就得到了蓝线端点。您所问的可能并不总是可能的。如何找到显示重叠直线的最佳解决方案或

想象一个GPS导航系统,它的线路连接不同的位置。这些线位于通过多个点的道路上(始终笔直,从不弯曲)。下面显示了一个简单的表示

现在有可能是线重叠了。重叠的线必须放置在与现有线相邻的完整位置。我怎样才能达到这个效果

我如何构建一个系统,使线与重叠的线保持相邻,并且永不交叉

有意-

无意-


只要红线不与自身相交,定义线的“左”方向,相对于其方向,可以使用线的法线并拾取边。然后将该法线的因子添加到原始直线的每个端点,就得到了蓝线端点。

您所问的可能并不总是可能的。如何找到显示重叠直线的最佳解决方案或解决方法?这可能太简单了,但在某些情况下,您可能会使用以下两种方法之一:调整不透明度以获得半透明直线(例如,alpha=.5),或使用不同宽度的线条。如果您有不同的宽度,请在前面绘制较宽的线条。在许多情况下,这两种线条都会产生视觉清晰的图示。(如果您有两条或三条以上的重叠线条,则这两种线条都不好。)这可能是你的意思,但再多说几句话。计算交叉点会有相当多的工作量,因为路线甚至可能会绕一整圈,所以仅仅向每个交叉点添加相同的矢量是不够的。但基本思想是,将每个线段偏移到“左”(线段必须有方向)然后计算每对连续直线的交点。交点偏移量可以通过使用相交线段的方向直接计算,需要一些向量算法。