2013-10-20 25 views
0

我有这个函数应该返回从点p到段线v-w的距离。 我遇到的问题是一段时间后我收到以下错误: 未捕获TypeError:对象[对象对象]的属性'dist2'不是函数。我在jquery中直接接收它,甚至没有调用函数dist2()。是否有任何其他dist2()在jQuery中的任何地方?我找不到任何其他dist2()。Uncaught TypeError:object [object Object]的属性'dist2'不是函数

代码:

function sqr(x) { 
    return x * x; 
} 

function dist2(v, w) { 
    console.log(v); 
    console.log(w); 
    return sqr(v.x - w.x) + sqr(v.y - w.y); 
} 

function distToSegmentSquared(p, v, w) { 
    var l2 = dist2(v, w); 
    if (l2 == 0) 
     return dist2(p, v); 
    var t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))/l2; 
    if (t < 0) 
     return dist2(p, v); 
    if (t > 1) 
     return dist2(p, w); 
    return dist2(p, {x: v.x + t * (w.x - v.x), 
     y: v.y + t * (w.y - v.y)}); 
} 

function distToSegment(p, v, w) { 
    return Math.sqrt(distToSegmentSquared(p, v, w)); 
} 

所给出该错误的值是:

p: Object 
x: 461 
y: 333 

v: Object 
x: 80 
y: 120 

w: Object 
x: 260 
y: 120 
+0

究竟是什么情况,您是否跟踪了callstack? – elclanrs

+0

var l2 = dist2(v,w); 这里死了 –

+0

你可以在jsfiddle上重现这个吗?这个错误在你的代码中似乎没有意义,你不会在任何对象上调用'dist2',据我所知。 – elclanrs

回答

0

我怀疑你的错误,是因为我们发出的JavaScript没有SQR功能。我放在一个

function sqr(v){return Math.pow(v,2);} 

并写了这个fiddle。一切都很豪华。

+0

它在那里...... –

0

我在jsfiddle中试过了你的代码,我找不到任何错误:fiddle

var result=distToSegment(
      {x:10,y:2}, {x:5,y:2}, {x:9,y:10} 
      ); 
+0

好吧,非常感谢。我也试过我的代码,ffs –

相关问题