2012-07-14 56 views
0

我在我的java書中工作這個例子,它應該繪製一個數學函數並且它可以工作,但是我不明白最後兩行,有人可以解釋它們我?假定data是一個雙精度數組,在某些「範圍」中保存函數值,在這種情況下,範圍是-pi到pi。在Java中使用小程序繪製數學函數

這本書對這段代碼有一點評論,我對它正在做什麼有了一個概念,但我想知道爲什麼我們要做這個循環中的最後兩行。

// Scale and translate data values 
for (int i = 0; i < d.width; i++) { 
     double value = data[i]; 
     double k = (value - min)/(max - min); 
     data[i] = d.height * (1 - k); 
    } 

有人可以幫我嗎?

+0

如果您覺得它有用,請隨時接受並提出答案,並回答您的問題,這似乎是這種情況! – Gigili 2012-07-15 11:12:01

回答

2

當然。爲了繪製圖形,函數的y值需要縮放,以便它們適合它們將被繪製的區域的高度。因此,ky的縮放版本,其範圍爲0到1,即最小值將映射到0,最大值將映射到1.最後,通過將k轉換爲之間的值,找到要繪製的數據點0和d.height

+0

謝謝你,我不完全理解這個解釋,但是我會一遍一遍地仔細研究它。這是一種標準的做事方式嗎? – rage 2012-07-14 05:22:56

+0

很標準,是的。嘗試使用不同的max,min和value值,看看k和d.height發生了什麼。然後你會明白。 – 2012-07-14 05:29:32

+0

確定它更有意義。我用數字{1,2,3,4,5}做了一個簡單的例子,並且爲了將這些數字映射到0-1,您確實需要這樣做:value - min/min之間的最小值和最小值。由於某種原因,我覺得在處理Math.random()之前我已經看到了這個。 – rage 2012-07-14 05:43:44