我想获得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]);
}
};
答案 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))