行的形式为:
A1 x + B1 y = C1
A2 x + B2 y = C2
我正在检查:
A1*B2-A2*B1 != 0
但我希望线条完全平行不相同
P.S。 - 只检查A1*B2-A2*B1
也会给出重合线。
答案 0 :(得分:3)
你是对的
A1 x + B1 y = C1
A2 x + B2 y = C2
当且仅当A1*B2 - B1*A2 == 0
时才是平行的。
假设它们是平行的,您需要确定它们是否是不同的。
请注意,如果A1*B2 - B1*A2 == 0
存在常量,k
,A1*k = A2
和B1*k = B2
。此常量可以计算为k = A2/A1
或k = AB/B1
。必须注意不要除以0
。您不能让A1
和B1
在一行中等于0
,因此您可以使用(伪代码):
if A1 != 0 then k = A2/A1 else k = B2/B1
确定k
后,请检查C1*k == C2
。如果这个等式成立则线条是相同的,如果不相同,它们是平行但不同的。
像往常一样,必须注意浮点运算。检查例如,这不是一个坏主意。 abs(C1*k - C2) < 0.00000001
而不是C1*k == C2
。