我有两个相交的A和B(每个由两个点定义)。 X点是A和B的交点。 我怎样才能找到X的坐标?
答案 0 :(得分:1)
我假设你在两个方面工作。我们来介绍一些符号。让第一个线段由点
定义P 1 =(x 1 ,y 1 )
和
P 2 =(x 2 ,y 2 )。
第二个线段由点
定义P 3 =(x 3 ,y 3 )
和
P 4 =(x 4 ,y 4 )。
第一个线段上的任何点都可以用参数表达式
表示s P 1 +(1 - s )P 2
其中 s 是介于0和1之间的实数。同样,第二行上的任何点都可以类似地表示为
t P 3 +(1 - t )P 4 。
交点是这两个表达式相等的地方:
s P 1 +(1 - s )P 2 = t P 3 +(1 - t )P 4
将其减少到x和y坐标会产生两个未知数的方程, s 和 t 。求解 s 和/或 t 然后通过替换回原始方程来产生交点。
请注意,使用这样的参数线表示(与计算斜率截距形式的方法不同)即使其中一个线段恰好具有无限斜率也是有效的。
另外,作为一个额外的好处,如果 s 或 t 最终超出范围[0,1],那么两行段< / em>不相交(包含段的行与一个或两个段之外的某个位置相交)。最后,如果两个联立方程没有解,则包含两个段的线是平行的。 (它们甚至可能在同一条线上。区分这种情况,包括区段是在端点处相遇还是部分或完全重叠,都留给读者练习。:))
答案 1 :(得分:1)
说段A上的两点是(x1, y1)
和(x2, y2)
。这两点足以确定直线的等式:
y - y1 = slope.(x - x1)
where slope is = (y2-y1)/(x2-x1)
因此,使用此技巧,您可以找到A和B段的方程式。对于每个段,它们的形式为y = p_A + q_A x and y = p_B + q_B x
。
两个段相交的点(x*, y*)
是y* = p_A + q_A x*
和y* = p_B + q_Bx*
,因此p_A + q_A x* = p_B + q_B x*
。在这里,您的值为x*,
,您可以通过在任何细分中替换此x的值来找到y*
。方程。
希望这有帮助!