我有一段代码,检查给定的3个坐标是否相互线性(如果是,则返回true)。但是有没有办法让代码给出或得到一些像素/图呢?
private boolean collinear(double x1, double y1, double x2, double y2, double x3, double y3) {
return (y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2);
}
你看,坐标必须完全内联才能注册为线性坐标。我怎样才能让它看起来在某种“范围”内,让它检查一个值,然后用新值设置坐标?
----添加----
我试着看这三个点是否构成一条直线,但我希望它在一个阈值内检查(因为有些点可能有点偏离)。一旦Java发现这些点实际上是线性的(给予或接受),我希望它随后替换x1、x2、x3、y1等……用Java检查的值。
最佳答案
使用黑森法向形式,你可以计算从一个点到一条线的垂直距离。因此,当距离小于一个树桩时,它们就足够近了。
这种代码称为distanceFromLine
()
Java内置了
Line2D line = new Line2D.Double(x0, y0, x1, y1);
double distance = line.ptLineDist(px, py);
if (Math.abs(distance) < threshold) {
// is Near line
}