C++:如何知道一个点i与两条线段相交?

C++:如何知道一个点i与两条线段相交?,c++,C++,我有两条直线段,由其方程式A1x+B1y+C1=0和A2x+B2y+C2=0给出,这两条直线段交点I的坐标可计算如下: x1 =B2*C1 − B1*C2 / A2*B1 − A1*B2 y1 =A1*C2 − A2*C1 / A2*B1 − A1*B2 我使用的是双值,如何知道I=x1,y1是否与两条线段相交 我尝试替换线段方程式中x1和y1的值,但似乎不起作用您需要括号: x1 = (B2*C1 − B1*C2) / (A2*B1 − A1*B2); y1 = (A1*C2 − A2*C

我有两条直线段,由其方程式A1x+B1y+C1=0和A2x+B2y+C2=0给出,这两条直线段交点I的坐标可计算如下:

x1 =B2*C1 − B1*C2 / A2*B1 − A1*B2

y1 =A1*C2 − A2*C1 / A2*B1 − A1*B2
我使用的是双值,如何知道I=x1,y1是否与两条线段相交

我尝试替换线段方程式中x1和y1的值,但似乎不起作用

您需要括号:

x1 = (B2*C1 − B1*C2) / (A2*B1 − A1*B2);
y1 = (A1*C2 − A2*C1) / (A2*B1 − A1*B2);

另一种方法是计算两条直线的两个常数,即角度切线和偏移,并检查它们的交点

(L1) y1 = k1 * x1 + b1
(L2) y2 = k2 * x2 + b2

// where

k1 = A1 / B1 and b1 = C1 / B1
k2 = A2 / B2 and b2 = C2 / B2 

// If they intersect (y1 == y2) and (x1 == x2)
// Subtract them and you will get
0 == (k1 - k2) * x + (b1 - b2)
x = (b2 - b1) / (k1 - k2)
// After getting the x
y = k1 * x + b1 or y = k2 * x + b2
要检查它们是否相交,可以检查k1==k2
要检查它们是否垂直,可以检查k1*k2==-1

这似乎不起作用,这不是对问题的有用描述。这些是直线方程而不是线段?通过将它们都设置为零,可以将两个方程彼此相等。现在你有两个方程和两个未知量。解算它们将给出直线相交处的x、y值,如果直线不相交,则将没有解。