2012-05-22 38 views
2

嘿,我有一個公式,我需要弄清楚它是基於圖表的數學,你必須在圖表上兩點需要得到其餘值:的Javascript數學

我建立一個JavaScript頁面以圖表上的兩點爲準,但需要吐出圖表上的任何位置。

它是基於知道兩個距離和視線設定上的射箭現場外推視線設置:

最大視線設定:VAR = 120;

 
Distances 
18M 
20M 
25M 
30M 
35M 
40M 
45M 
50M 
55M 
60M 
70M 
90M 

用戶將通過表單元素提供以下內容。

最短錄像設置碼率和站點設置位置E.G. 45M = 50 最長記錄視距設置碼距和現場設置位置E.G. 70M = 105

最大設置現場= 120

距離,他們希望得到(同上列表)

估計什麼方程式會做的是猜選擇的碼數站點設置只要他們已經進入了前兩個設置。

由於某種原因,我失去了試圖找出這個數學。

+1

聽起來像線性插值。你是否試圖對這兩個點進行擬合,然後找到第三個點的相應Y值,因爲它是X? – mpen

+0

正是我想要完成的! – MadScientist

+0

你在說一個_straight_行嗎? (我對射箭知之甚少,但是你不必爲彎曲的路徑考慮箭頭嗎?) – nnnnnn

回答

1

首先,真的很酷的問題!

我一般依靠肯塔基州的風向標,但這似乎是一個更精確的方法!

我有一個解決方案,我沒有打擾創建表單輸入,而只是創建了一些靜態輸入。

var max = {"distance" : 70,"sight" : 105}; 
var min = {"distance" : 45,"sight" : 50}; 
var calculateSightSetting = function(dist,min,max){ 
    var distRange,distFactor,sightRange,returnDistance; 
    if (dist < min.distance){ 
     throw "Distance provided must be at least " + min.distance + " M Long"; 
    }else{ 
     distRange = max.distance - min.distance; 
     distFactor = ((dist-min.distance)/distRange); 
     sightRange = max.sight-min.sight; 
     returnDistance = min.sight + (sightRange * distFactor); 
    } 
    return returnDistance; 
}     
console.log(calculateSightSetting(60,min,max)); 

我還創建了一個JSFiddle,以便您可以運行它並查看它是否按預期執行。

http://jsfiddle.net/marteljn/rtYRZ/4/

+0

感謝您對此的工作,它看起來很有希望。我已經使用線性插值計算出了一些似乎很好的方法。 – MadScientist

+0

看起來我們正在做同樣的事情。你的解決方案的價值與我的相同。 – marteljn

+0

有趣的是,有很多方法可以做同樣的事情。謝謝您的幫助。 – MadScientist

0

感謝輸入每個人,

我想我已經得到它想通了,你可以在

http://matthewchitty.com/archery

(請注意,檢查出的解決方案是JavaScript的,所以你可以查看源代碼並查看代碼。)

結束了很簡單的一個我找出插值。