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