查找线段是否是另一条线的子段

时间:2019-06-08 17:29:31

标签: c

如何查找某行是否为另一行的子段?

第1行:(2,2)和(20,20)

第2行:(5,5)和(15,15)

我知道如何用数学方法执行此操作,但是很难在c中进行编码。我发现斜率相等,但找不到一种方法来检查线是否是同一条线的一部分,而不仅仅是平行线。

1 个答案:

答案 0 :(得分:0)

这似乎是家庭作业,所以我只画一个答案。您必须自己编写代码。

首先,坡度是否相同?如果没有,它们只有一个共同点。停。假设坐标是整数,则可以通过计算每个 dx dy 并交叉乘以来避免浮点错误(h / t为上述Weather Vane的注释)。 / p>

第二,延长线是否有共同点?可以通过找到y截距或其他各种方式来做到这一点。如果不是,它们是平行的;停止。

到此为止,我们知道这些段在同一行上,因此现在我们必须测试间隔。如果它们是水平的,请查看 x ;如果是垂直的,请查看 y ;如果倾斜,则选择一个坐标,任何一个都会起作用。

对每对端点进行排序以获得 a b ,以使 a < b 。然后,只需比较每个分段的最左边端点和最右边。请记住,一个或两个可能相等。