我正在使用三角测量来计算用户的位置。
如果我使用数组值,则会输出NaN NaN
,但如果我对值进行硬编码,则可以正常工作并输出
从数组中抓取值:
var beaconCoordinates = [[10,20], [200,300], [50,500]];
//get values from array
var aX = parseInt(beaconCoordinates[0,0]);
var aY = parseInt(beaconCoordinates[0,1]);
var bX = parseInt(beaconCoordinates[1,0]);
var bY = parseInt(beaconCoordinates[1,1]);
var cX = parseInt(beaconCoordinates[2,0]);
var cY = parseInt(beaconCoordinates[2,1]);
硬编码值:
var aX = 2;
var aY = 4;
var bX = 5.5;
var bY = 13;
var cX = 11.5;
var cY = 2;
以下是代码的其余部分:
var dA = 5.7;
var dB = 6.8;
var dC = 6.4;
//trilateration / triangulation formula
var S = parseInt((Math.pow(cX, 2.) - Math.pow(bX, 2.) + Math.pow(cY, 2.) - Math.pow(bY, 2.) + Math.pow(dB, 2.) - Math.pow(dC, 2.)) / 2.0);
var T = parseInt((Math.pow(aX, 2.) - Math.pow(bX, 2.) + Math.pow(aY, 2.) - Math.pow(bY, 2.) + Math.pow(dB, 2.) - Math.pow(dA, 2.)) / 2.0);
var y = ((T * (bX - cX)) - (S * (bX - aX))) / (((aY - bY) * (bX - cX)) - ((cY - bY) * (bX - aX)));
var x = ((y * (aY - bY)) - T) / (bX - aX);
//x and y position of user
console.log(x,y);
有人可以向我解释一下吗?我很困惑。
答案 0 :(得分:3)
访问阵列时出现轻微错误。你需要
parseInt(beaconCoordinates[0][0]);
而不是
parseInt(beaconCoordinates[0,0]);
答案 1 :(得分:0)
问题是你只获得顶级数组,你不能访问值arr [0,0]而是需要一次获得一个值:arr [0] [0]
var beaconCoordinates = [[10,20], [200,300], [50,500]];
//get values from array
var aX = parseInt(beaconCoordinates[0][0]);
var aY = parseInt(beaconCoordinates[0][1]);
var bX = parseInt(beaconCoordinates[1][0]);
var bY = parseInt(beaconCoordinates[1][1]);
var cX = parseInt(beaconCoordinates[2][0]);
var cY = parseInt(beaconCoordinates[2][1]);
console.log(cY);
如果你正在使用它,你也应该将一个基数参数传递给parseInt ......