flo*_*rin 63
您可以检查ABC三角形的面积是否为0:
[ Ax * (By - Cy) + Bx * (Cy - Ay) + Cx * (Ay - By) ] / 2
Run Code Online (Sandbox Code Playgroud)
当然,你实际上不需要除以2.
dcp*_*dcp 54
这是C++,但你可以将它改编为python:
bool collinear(int x1, int y1, int x2, int y2, int x3, int y3) {
return (y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2);
}
Run Code Online (Sandbox Code Playgroud)
基本上,我们检查点1和点2之间以及点1和点3之间的斜率是否匹配.斜率是y的变化除以x的变化,因此我们得到:
y1 - y2 y1 - y3
------- = --------
x1 - x2 x1 - x3
Run Code Online (Sandbox Code Playgroud)
交叉乘法给出(y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2);
注意,如果你使用双打,你可以检查epsilon:
bool collinear(double x1, double y1, double x2, double y2, double x3, double y3) {
return fabs((y1 - y2) * (x1 - x3) - (y1 - y3) * (x1 - x2)) <= 1e-9;
}
Run Code Online (Sandbox Code Playgroud)