回覆列表
  • 1 # 多加點香菜否

    可以得出(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是三角形的半周長。

  • 中秋節和大豐收的關聯?
  • 手機能下載軟體但是安裝不了?