Java-使绘图点接近线性-完全线性
我如何改变“接近”线性(在阈值内)的点,实际上是线性的点 我有一些代码,检查3个点是否彼此线性(给予或接受),我想用100%内联的新坐标替换这些坐标Java-使绘图点接近线性-完全线性,java,math,coordinates,point,threshold,Java,Math,Coordinates,Point,Threshold,我如何改变“接近”线性(在阈值内)的点,实际上是线性的点 我有一些代码,检查3个点是否彼此线性(给予或接受),我想用100%内联的新坐标替换这些坐标 double distance = (x1 - x2) * (y1 - y3) - (y1 - y2) * (x1 - x3); double threshold = 4; if (Math.abs(distance) <= threshold) { // is Ne
double distance = (x1 - x2) * (y1 - y3) - (y1 - y2) * (x1 - x3);
double threshold = 4;
if (Math.abs(distance) <= threshold) {
// is Near line
return true;
}
else
return false;
双距离=(x1-x2)*(y1-y3)-(y1-y2)*(x1-x3);
双阈值=4;
if(Math.abs(distance)将点捕捉到直线的技术术语是将点投影到直线(-segment)
剩下的唯一问题是:点是投影到直线上还是投影到线段上?(直线段仅在两点之间,直线具有无限长并通过两个点)
下面的代码解决了这两个问题:
为了允许将点投影到点A->B之外的线的另一端,代码会简单得多,但下面的链接也介绍了这一点
看
投影点位于变量(xx,yy)中:
(xx,yy)是线段上最靠近(cx,cy)的点。获取它们应该拟合的直线方程,然后找到穿过该点和原始直线的垂直直线,然后使用垂直直线和原始直线的交点。