Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找到某一点的最长距离(java,2d图表)_Java_Distance - Fatal编程技术网

查找到某一点的最长距离(java,2d图表)

查找到某一点的最长距离(java,2d图表),java,distance,Java,Distance,我正在用Java开发一个集群程序。我试图在一个有x轴和y轴的二维图中找到距离另一个点最远的点。 我想我可以用毕达哥拉斯: 其中,起点Y轴的平方+其他点X轴的平方将确定它们之间的距离 我的代码所做的就是针对这个特定点,检查所有其他点,看看它是否找到一个距离更大的点。我目前掌握的代码如下: // The points to find longest distance from x_coord = 2; y_coord = 4; // Need to find right size double

我正在用Java开发一个集群程序。我试图在一个有x轴和y轴的二维图中找到距离另一个点最远的点。 我想我可以用毕达哥拉斯: 其中,起点Y轴的平方+其他点X轴的平方将确定它们之间的距离

我的代码所做的就是针对这个特定点,检查所有其他点,看看它是否找到一个距离更大的点。我目前掌握的代码如下:

// The points to find longest distance from
x_coord = 2;
y_coord = 4;


// Need to find right size
double var1 = Math.pow(y_coord, 2); // square of Y
double var2 = 0;
double var3 = 0;
int sum = 0;

/* For all coords ( of the cluster clusters)
* coordsX is an array that holds all the X coordinates
* of all other points
*/
for (int k = 0; k < coordsX.length; k++){
    // Check which is furthest away from 

    var2 = Math.pow(coordsX[k], 2);  // square of X 
    var3 =  var1 + var2;  // Sum of var1 and var2
    sum = (int)Math.sqrt(var3); // Square root to find distance 
    if (sum > longestDistance){
      longestDistance = sum;
     }
}
//要从中查找最长距离的点
x_坐标=2;
y_坐标=4;
//需要找到合适的尺寸
double var1=Math.pow(y_coord,2);//Y的平方
双变量2=0;
双变量3=0;
整数和=0;
/*对于(集群的)所有坐标
*coordsX是一个保存所有X坐标的数组
*所有其他要点
*/
for(int k=0;k最长距离){
最长距离=总和;
}
}

有没有人对可能出现的问题有什么建议?或者这是一种不适合计算距离的方法吗?

我从代码中跳出来的第一件事是将sqrt()调用的结果强制转换为int。这似乎会导致问题

因此,要找到两个点之间的距离,例如位于xy平面上的A和B,其中A和B是索引,您需要做以下操作:

double distanceSquared = Math.pow(coordsX[A] - coordsX(B), 2) + Math.pow(coordsY[A] - coordsY(B), 2);
如果你只想找到最远的点,不需要平方根,因为它是一个单调函数,所以它根本不会改变比较的结果

只需比较距离平方

编辑:你的代码

double longestDistanceSquared = 0;
int mostDistantPointIndex = -1;
for (int k = 0; k < coordsX.length; k++){
    double distanceSquared = Math.pow(coordsX[k] - x_coord, 2) + Math.pow(coordsY[k] - y_coord, 2);
    if (distanceSquared > longestDistanceSquared){
        longestDistanceSquared = distanceSquared;
        mostDistantPointIndex = k;
    }
}
double longestancesquared=0;
int mostDistantPointIndex=-1;
for(int k=0;k最长距离平方){
longestDistanceSquared=距离平方;
mostDistantPointIndex=k;
}
}

Gosh,这么多错误,我不知道从哪里开始。。。你甚至不能计算两点的距离?那是基础数学!可悲的是,数学不是我的强项。除了“学习基础数学”之外,还有什么其他的建议吗?这是你选择的教科书。这和你的个人喜好有关你喜欢什么。。。我的偏好对你来说可能太抽象了。但是缺乏数学/统计知识最终会严重伤害你。