2018 7 31 C 判斷兩條直線距離

2021-09-29 20:10:01 字數 1496 閱讀 5598

title

author

date

createtime

categories

c# 判斷兩條直線距離

lindexi

2018-07-31 14:38:13 +0800

2018-05-08 10:32:50 +0800

數學 c# 幾何

一般式的意思就是

$$ ax+by+c=0 $$

如果有兩個直線

$$ a_1x+b_1y+c_1=0 \ a_2x+b_2y+c_2=0 $$

如何判斷兩條直線的距離?

如果需要判斷兩條直線的距離,首先兩條直線需要是平行

判斷一般式直線平行的方法

如果兩條直線符合上面公式,可以認為兩條直線平行。

對於一般的兩條直線,獲得距離的公式

$$ d= \frac} $$

但是因為兩個直線一般式的 ab 是不相等的,所以需要把兩個直線轉換相同的 ab

$$ a_1x+b_1y+c_1=0 \ a_2x\frac+b_2y\frac+c_2\frac=0 \ a_1x+b_1y+c_2\frac=0 $$

這時的距離公式是

$$ d= \frac\right|}} $$

但是存在 a 或 b 是 0 ,所以就不能直接使用上面的距離

如果$a=0 ,b \neq 0$ 那麼需要修改直線公式

$$ b_1y+c_1=0 \ b_1y+c_2\frac=0 $$

這時距離公式

$$ d= \frac\right|} $$

如果$a\neq0 ,b = 0$ 那麼需要修改直線公式

$$ a_1x+c_1=0 \ a_1x+c_2\frac=0 $$

這時距離公式

$$ d= \frac\right|} $$

因為我是在程式設計,我可以拿到距離平方,這樣可以減少開方,我把上面的公式寫為**,**是c#不過大家可以把他使用其他語言

///

>

/// 獲得兩條直線的距離,傳入的直線已經是判斷平行

///summary

>

///name

="otherline"

>param

>

///>returns

>

public

double? getdistancewithlinesquare(lineequation

otherline)

if (!

aiszero

&&biszero)

if (!

aiszero&&!

biszero)

if (aiszero

&&biszero)

return

default(double?);

}

上面**的a.iszero()就是判斷 a 是不是為 0 ,在 c# 很難判斷 double 是不是為 0 所以需要這個方法

2018 7 31 C 判斷兩條直線距離

title author date createtime categories c 判斷兩條直線距離 lindexi 2018 07 31 14 38 13 0800 2018 05 08 10 32 50 0800 數學 c 幾何 一般式的意思就是 ax by c 0 如果有兩個直線 a 1x b...

C 判斷兩條直線距離

一般式的意思就是ax by c 0 role presentation ax by c 0ax by c 0如果有兩個直線a1 x b1 y c1 0a2 x b2 y c2 0 role presentation a1x b1y c1 0a2x b2y c2 0a1x b1y c1 0a2x b2...

如何判斷兩條直線是否相交

之前寫過一篇如何判斷兩條線段是否相交,我們緊接這個主題,再來談談如何判斷兩條直線是否相交 總體來上,判斷直線是否相交比判斷線段是否相交容易多了 兩條直線相交只有兩種情況 第一種 兩條直線斜率不相同 斜率不存在的情況算做一種斜率 第二種 兩斜率相同且截距也相同,即重合 如果這個相同的斜率都是斜率不存在...