获得2d数组JavaScript中两点之间的距离

时间:2015-11-09 03:28:00

标签: javascript arrays loops distance

我想获得hillArray [i] [0])和hillArray [i + 1] [0]之间的距离。 我确实意识到当循环到达最后一次交互时,点hillArray [i + 1] [0])将无效。我不知道如何解决这个问题。

这是我生成点的代码

function randomMap(numOfHills){
    hillArray.push([ xMap*0,yMap]);
    for(var i=0; i<numOfHills; i++){
        xRandomForHills = Math.floor((Math.random() * 1000));
        if(xRandomForHills >= 950){
            xRandomForHills = xRandomForHills - 10;
        }
        if(xRandomForHills <= 50){
            xRandomForHills = xRandomForHills + 10;
        }
        yRandomForHills = Math.floor((Math.random() * 300));
        if(yRandomForHills <= 10){
            yRandomForHills = yRandomForHills + 30;
        }
        hillArray.push([xRandomForHills,yRandomForHills]);

    }
    hillArray.push([xMap,yMap]);
    sortArray(numOfHills);
};

这是我跟踪距离的代码。 [i + 1]是错误或至少我认为是。

function baseDist(){
    baseDist = [];
    var xDistanceCheck;
    var yDistanceCheck;
    var distance = 0;

        for(var i=0;i<=hillArray.length;i++){

                FIRST C-A
                console.log("_________________________________");
                xDistanceCheck = hillArray[i][0]) - (hillArray[i][0]);
                xDistanceCheck = xDistanceCheck * xDistanceCheck;
                yDistanceCheck = hillArray[i][1] - (hillArray[i][1]);
                yDistanceCheck = yDistanceCheck * yDistanceCheck;
                distance = Math.floor(Math.sqrt(xDistanceCheck + yDistanceCheck));
                baseDist.push([distance])
                console.log(" Point " + hillArray[i][0]) " to point " + (hillArray[i+1][0]) + baseDist[0]);

                console.log("Last C-A  = " + baseDist[i]);


        }
};

2 个答案:

答案 0 :(得分:0)

找到答案,我用模块......

var l = array.length;

var current = array[i];
var previous = array[(i+l-1)%l];
var next = array[(i+1)%l];

How to get the previous and next elements of an array loop in JavaScript?

上找到答案

答案 1 :(得分:0)

以下是计算两点之间距离的公式

公式

Math.sqrt(Math.pow(Math.abs(x1-x2),2) + Math.pow(Math.abs(y1-y2),2)+ Math.pow(Math.abs(z1-z2),2))