题目:已知平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3), 判断它们是否共线。
方法一:判断向量(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是三角形的半周长。但这种方法显然是避简就繁,写在这里只是为了复习一下中学学过的海伦公式~