2017-05-09 36 views
0

我得到了兩條曲線,如this plot
確定兩條曲線是否互相重疊

我想找到他們重疊的時間間隔。 對於此圖,重疊間隔爲[5.2,6.8]。 我的解決辦法是:

  • 爲藍色跟蹤每兩個連接點(得到線性函數,調用它1號線)
  • 我都會搜索,有沒有從橙色曲線秋季任何點這個範圍。
  • 如果我找到一個,那麼這個點和這個點之前的點,將會形成一條線(得到線性函數,稱之爲線2)。
  • 找到第1行和第2行的交點。
  • 如果交點在第1行和第2行的最小範圍內,它們相交。
  • 如果不是使用由此點創建的線和點之後的點執行相同的過程。
  • 最後,循環遍歷藍色軌跡上的所有點。

我想知道有沒有其他有效的方法來解決這個問題?
我想python和matlab可能有內置函數來實現這個功能,但是我正在用JavaScript寫這個,所以有什麼建議嗎?
謝謝!

+0

聽起來不太糟糕。我會給它一個鏡頭。 – f1sh

+0

起初java!=== javascript –

+0

圖片不對,我會試着修復它 – MaXon

回答

0

也許簡單地得到接近路口這樣的:

//given two functions (in a math way) f1,f2 
var compared=f1(0)<f2(0); 
var intersections=[]; 
for(range=0;range<1000;range+=0.001){ 
    if(compared!==(f1(range)<f2(range))){ 
    intersections.push(range); 
    compared!=compared; 
    } 
} 

這種方法適用於所有種類的功能,但如果我們促成了一組線性函數,我們可以做一些簡單的數學得到的過境點:

f1(x) = a1 * x + b1; 
f2(x) = a2 * x + b2; 
f1(x)=f2(x) 
a1 * x + b1 = a2 * x + b2 | -b1 -(a2*x) 
a1 * x - a2 * x = b2 - b1 | :(a1-a2) 
x= (b2-b1)/(a1-a2); 
+0

f1和f2代表什麼?兩點產生的線性函數? – MaXon

+0

@MaXon是嗎?如果它真的是線性的,我們可以做基本的數學...(你的不是線性的) –

+0

我明白底部,找到交點 – MaXon