2013-10-20 50 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 –

相關問題