如何查找某行是否为另一行的子段?
第1行:(2,2)和(20,20)
第2行:(5,5)和(15,15)
我知道如何用数学方法执行此操作,但是很难在c中进行编码。我发现斜率相等,但找不到一种方法来检查线是否是同一条线的一部分,而不仅仅是平行线。
答案 0 :(得分:0)
这似乎是家庭作业,所以我只画一个答案。您必须自己编写代码。
首先,坡度是否相同?如果没有,它们只有一个共同点。停。假设坐标是整数,则可以通过计算每个 dx 和 dy 并交叉乘以来避免浮点错误(h / t为上述Weather Vane的注释)。 / p>
第二,延长线是否有共同点?可以通过找到y截距或其他各种方式来做到这一点。如果不是,它们是平行的;停止。
到此为止,我们知道这些段在同一行上,因此现在我们必须测试间隔。如果它们是水平的,请查看 x ;如果是垂直的,请查看 y ;如果倾斜,则选择一个坐标,任何一个都会起作用。
对每对端点进行排序以获得 a 和 b ,以使 a < b 。然后,只需比较每个分段的最左边端点和最右边。请记住,一个或两个可能相等。