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

时间:2017-06-29 15:09:23

标签: javascript arrays for-loop math distance

我有一堆存储在数组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-scale和y-scale的差异,这意味着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)

1 个答案:

答案 0 :(得分:0)

首先,你不需要担心否定因为你正在对它们进行定位,它们会取消。

其次你的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)