基于 x 值和 y 值的不同点之间的最大距离?

Biggest distance between different points based on x-values and y-values?

我得到了一堆存储在数组 arr 中的节点。 每个节点都有一个 x 和 y 值,代表屏幕上的位置。 现在,我创建了 arr 的中间元素并将其保存在 middle 中。 现在,我的目标是找出 middle 与所有其他节点之间的距离,并找出距离最大的节点。对于距离,我使用毕达哥拉斯定理 a^2 + b^2 = c^2,这意味着 sqrt(a^2 + b^2) = c 或在我的例子中 sqrt(x^2 + y^2) = distance between 2 nodes

例如,为了创建 (10,10)(20,30) 之间的距离,我创建了 x 尺度和 y 尺度的差异,这意味着 x = 20-10 = 10y = 30-10 = 20.结果是,这些节点之间的距离是 sqrt( 10^2 + 20^2) = 22,3. 在我的代码中,我检查了 if-loop,哪个 x 值和 y 值更大以避免负值。但是我做的东西是错误的。也许有人可以帮忙?

    var middle = arr[Math.floor(arr.length / 2)];
    var arrayForDistance = [];
    var distance = [];
    for(i = 0; i != arr[middle] & i< arr.length;  i++ ) {

     if(arr[i].x > arr[middle].x) { 

    var newX = arr[i].x - arr[middle].x;
    var newY = arr[i].y - arr[middle].y;
    } 

else if ( arr[i].x < arr[middle].x)
      {
    var newX = arr[middle].x - arr[i].x;
    var newY = arr[middle].y - arr[i].y;
    }}


    distance = sqrt( newX^2 + newY^2)
    arrayForDistance.push(distance[i]);
    }

    var maxDistance = Math.max.apply(null, arrayForDistance)

首先,您不必担心负数,因为您正在对它们进行平方,它们会抵消。

其次你的for循环是错误的它应该是

var middle = arr[Math.floor(arr.length / 2)];
var arrayForDistance = [];
var distance ;
for(i = 0;  i< arr.length;  i++ ) {

    if (i != Math.floor(arr.length / 2)){
    var newX = arr[i].x - arr[middle].x;
    var newY = arr[i].y - arr[middle].y;

    distance = sqrt( newX^2 + newY^2)
    arrayForDistance.push(distance);
   }
}
var maxDistance = Math.max.apply(null, arrayForDistance)