1

我阅读了各种相关的答案。特别是在这里(你如何检测两条线段相交的位置?)很好地解释了如何找到两条线段之间的交点并检查平行度以及它们是否属于同一条线。我按照这个好主意编写了一个 fortran 程序。现在的问题包括当两条线段属于同一条线时找到联合线段。在这里,我找到了一个 C++ 代码(检测两个重合线段的重合子集),但没有解释,我无法阅读 C++,但只能阅读 Fortran(这是一个有用的图像描述问题,发布在另一个问题中,但没有有用的答案http: //judark.myweb.hinet.net/parallel.JPG)。找到属于同一条线的两个段的公共点(即联合段,即定义该联合的两个点)的轨迹的最佳语言无关算法是什么?我已经设法通过“如果”计算点之间的所有曼哈顿距离(http://en.wikipedia.org/wiki/Taxicab_geometry)来做到这一点,但我想知道是否有更好的方法来做到这一点。谢谢。

4

1 回答 1

0

如果这两个线段在同一条线上并且确实重叠,那么并集就是四个端点中相距最远的两个端点之间的线段。因此,只需计算所有平方距离(无需计算平方根)并识别具有最大距离的对。这种方法可以很好地处理许多退化的情况,包括所有 4 个点重合并且两个相等点的并集就是那个点的情况。

于 2013-02-09T03:27:08.973 回答