2013-06-03 100 views
0

我想根據三角形一半的窗簾點找出房屋形狀的長度。例如,每當我向下移動三角形的長邊時,我會每次測量的時間都短於最後一次。我正在嘗試正確的代碼,將爲我找到這個。我知道第一次測量將等於從底部到三角形頂點的高度。然後每次它在三角形下移動三英尺時,它將減去9英寸。不過,我需要它在零點時停下來。我已經建立了這樣的陣列。我該如何製作這個陣列?

var endwallPanelLength=[] 
endwallPanelLength[1]=peakHeight; 
endwallPanelLength[2]=peakHeight-peakHeightDecrease; 
endwallPanelLength[3]=endwallPanelLength[2]-peakHeightDecrease; 
endwallPanelLength[4]=endwallPanelLength[3]-peakHeightDecrease; 

我知道我還有其他事情要制定出整個代碼,但我怎麼能至少更有效地定義數組在這些測量。

peakHeight降低只是3 *坡度

+0

牆。總結。那裏的問題究竟是什麼?你想讓我們爲你編碼嗎? –

+0

如何更有效地定義該變量? –

+0

我很確定這將屬於更多的http://programmers.stackexchange.com,因爲它是優化。 –

回答

0

這是你想要的嗎?

var endwallPanelLength = [peakHeight]; 
var i = 0; 
while (endwallPanelLength[i] >= peakHeightDecrease) { 
    endwallPanelLength.push(endwallPanelLength[i] - peakHeightDecrease); 
    i++; 
} 

BTW,數組下標通常從0開始。

的另一種方法是剛剛通過的下降來劃分peakHeight:

文本
var repetitions = Math.floor(peakHeight/peakHeightDecrease); 
var endwallPanelLength = []; 
for (var i = 0; i <= repetitions; i++) { 
    endwallPanelLength.push(peakHeight - peakHeightDecrease*i); 
} 
+0

這個答案正在工作,但它總是給我一個負值? –

+0

更改結束條件。另一種方法是將peakHeight除以peakHeighDecrease以獲得迭代次數。這算不算簡單的數學? – Barmar