可以得出(x2-x1)(y3-y1)=(x3-x1)(y2-y1)
分解:
A(x1,y1),B(x2,y2),C(x3,y3)
向量AB=(x2-x1,y2-y1),向量AC=(x3-x1,y3-y1)
A、B、C共線得: 向量AB//向量AC
(x2-x1)(y3-y1)=(x3-x1)(y2-y1)
所以A、B、C共線:(x2-x1)(y3-y1)=(x3-x1)(y2-y1)
方法一:判斷向量(p1-->p2)和向量(p1-->p3)的斜率是否相等。即 (y2-y1)/(x2-x1) == (y3-y1)/(x3-x1). 這個除式判斷可以改寫成乘式判斷:(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0 (改寫的原因是除法有分母為0或精度等問題,總之乘法更方便!)
注意,如果座標本身是浮點型,儘量不要用“==”進行比較,因為在計算機中小數會有一定的誤差,這時應該取一定的誤差,例如
|(y3−y1)(x2−x1)−(y2−y1)(x3−x1)|<=1e−6
方法二:用行列式求三角形面積,再判斷是否為0.
S=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)
方法三:同樣是面積法,用海倫公式求三角形面積. 海倫公式:S=sqrt(p*(p-a)*(p-b)*(p-c)). 其中a,b,c為三角形邊長,p=C/2是三角形的半周長。
可以得出(x2-x1)(y3-y1)=(x3-x1)(y2-y1)
分解:
A(x1,y1),B(x2,y2),C(x3,y3)
向量AB=(x2-x1,y2-y1),向量AC=(x3-x1,y3-y1)
A、B、C共線得: 向量AB//向量AC
(x2-x1)(y3-y1)=(x3-x1)(y2-y1)
所以A、B、C共線:(x2-x1)(y3-y1)=(x3-x1)(y2-y1)
方法一:判斷向量(p1-->p2)和向量(p1-->p3)的斜率是否相等。即 (y2-y1)/(x2-x1) == (y3-y1)/(x3-x1). 這個除式判斷可以改寫成乘式判斷:(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0 (改寫的原因是除法有分母為0或精度等問題,總之乘法更方便!)
注意,如果座標本身是浮點型,儘量不要用“==”進行比較,因為在計算機中小數會有一定的誤差,這時應該取一定的誤差,例如
|(y3−y1)(x2−x1)−(y2−y1)(x3−x1)|<=1e−6
方法二:用行列式求三角形面積,再判斷是否為0.
S=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)
方法三:同樣是面積法,用海倫公式求三角形面積. 海倫公式:S=sqrt(p*(p-a)*(p-b)*(p-c)). 其中a,b,c為三角形邊長,p=C/2是三角形的半周長。