检查两条线是否完全平行?

时间:2015-12-06 14:04:12

标签: algorithm math geometry lines

行的形式为:

A1 x + B1 y = C1
A2 x + B2 y = C2

我正在检查:

A1*B2-A2*B1 != 0

但我希望线条完全平行不相同

P.S。 - 只检查A1*B2-A2*B1也会给出重合线。

1 个答案:

答案 0 :(得分:3)

你是对的

A1 x + B1 y = C1
A2 x + B2 y = C2

当且仅当A1*B2 - B1*A2 == 0时才是平行的。

假设它们是平行的,您需要确定它们是否是不同的。

请注意,如果A1*B2 - B1*A2 == 0存在常量,kA1*k = A2B1*k = B2。此常量可以计算为k = A2/A1k = AB/B1。必须注意不要除以0。您不能让A1B1在一行中等于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