我阅读了各种相关的答案。特别是在这里(如何检测两条线段的交叉点?),它详细解释了如何找到两条线段之间的交叉点,检查平行度以及它们是否属于同一条线。我按照这个伟大的想法写了一个fortran程序。现在的问题是,当两个线段属于同一条线时,要找到并集线段。在这里,我发现了一个C++代码(检测两个重合线段的重合子集),但它没有解释,我不会读C++,只能读Fortran(这是一个有用的问题描述,发布在另一个问题中,但没有有用的答案http://judark.myweb.hinet.net/parallel.JPG)。找到属于同一条线的两个线段的公共点(即并集线段,即定义该并集的两个点)的轨迹的最佳语言不可知算法是什么?我已经用planty的"if"计算了所有点之间的曼哈顿距离(http://en.wikipedia.org/wiki/Taxicab_geometry)但我想知道是否有更好的方法。谢谢A.
如果两个线段在同一条线上并且确实重叠,则并集只是四个端点中彼此相距最远的两个端点之间的线段。因此,只需计算所有平方距离(无需计算平方根),并识别具有最大距离的对。这种方法很好地处理了许多退化的情况,包括所有4个点重合并且两个相等点的并集就是这个点的情况。