可以得出(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是三角形的半周长。
版权声明:本站部分文章来源互联网,主要目的在于分享信息,版权归原作者所有,本站不拥有所有权,不承担相关法律责任,如有侵权请联系我们,本站将立刻删除。