我阅读了各种相关答案。特别是在这里(How do you detect where two line segments intersect?),它被大大地解释了如何找到两个段之间的交集并检查并行性以及它们是否属于同一行。我按照这个好主意写了一个fortran程序。现在的问题在于当两个段属于同一行时找到union段。在这里我找到了一个C ++代码(Detecting coincident subset of two coincident line segments),但没有解释,我不能阅读C ++但只能阅读Fortran(这是一个有用的图像描述问题,发布在另一个问题但没有有用的答案http://judark.myweb.hinet.net/parallel.JPG )。找到属于同一条线的两个分段的公共点(即,联合段,即定义该联合的两个点)的轨迹,最好的语言不可知算法是什么?我设法用“如果”计算点之间的所有曼哈顿距离(http://en.wikipedia.org/wiki/Taxicab_geometry),但我想知道是否有更好的方法来做到这一点。 谢谢 甲
答案 0 :(得分:0)
如果两个分段在同一条线上并且重叠,则联合仅仅是在彼此之间最远的四个端点中的那两个之间的分段。因此,只需计算所有平方距离(无需计算平方根)并识别具有最大距离的对。这种方法很好地处理了许多退化情况,包括所有4个点重合并且两个相等点的并集就是这一点的情况。