2014-12-19 29 views
2

我正在计算使用三角测量的用户的位置。为什么从数组中获取NaN(不是数字)错误?

如果我使用数组值它输出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

这怎么是一个重复的???我只是没有意识到我愚蠢的错误。 – smj2393 2014-12-19 11:47:39

+1

,而实际的错误可能是重复的(即解决方案是相同的),问题是不同的。问题是否因为答案重复而关闭?那听起来不错 – atmd 2014-12-19 11:51:54

+1

正确...如果是这种情况,Stackoverflow上的大多数问题都将重复! – smj2393 2014-12-19 12:12:03

回答

3

访问数组的方式存在一个小错误。你需要

parseInt(beaconCoordinates[0][0]); 

而不是

parseInt(beaconCoordinates[0,0]);

+0

Ahhhhh,谢谢。这样的错误!它总是愚蠢的错误,最难倒你:( – smj2393 2014-12-19 11:44:33

+1

是的,这是一个,你可以看几个小时,仍然错过它,有时另一双眼睛捡起最小的东西 – atmd 2014-12-19 11:49:38

0

的问题是,你只得到了最高级别阵列,你不能访问值ARR [0,0],而不是你需要在一个时间得到的一个值:ARR [0] [0]

http://jsfiddle.net/ayqmLp2n/

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函数,如果你正在使用它......

Why do we need to use radix?

http://www.w3schools.com/jsref/jsref_parseint.asp

+0

是的,谢谢。错误! – smj2393 2014-12-19 11:46:01

相关问题