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

Check If Two Lines Are Exactly Parallel or Not?

行的格式为:

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

我正在检查:

A1*B2-A2*B1 != 0

但我希望线条应该完全平行而不是相同

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

你说得对

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

平行当且仅当A1*B2 - B1*A2 == 0.

假设它们是平行的,你想判断它们是否不同。

请注意,如果 A1*B2 - B1*A2 == 0 则存在一个常量 k,其中 A1*k = A2B1*k = B2。该常量可以计算为 k = A2/A1k = AB/B1。必须注意不要除以 0。你不能在一行中同时让 A1B1 等于 0,因此你可以使用 (pseudocode):

if A1 != 0 then k = A2/A1 else k = B2/B1

确定 k 后,检查是否 C1*k == C2。如果这个等式成立,那么这些线是相同的,如果不是,它们是平行但不同的。

像往常一样,浮点运算必须小心。检查例如abs(C1*k - C2) < 0.00000001 而不是 C1*k == C2.