2014-01-31 53 views
1

我想構建一個程序,在JFrame上繪製函數(使用JComponent)...但我似乎無法得到正確的增量,以便它正確平局。正確的邏輯增量繪製JComponent(Java)

這些變量是用戶定義:

int lowerX // lower x domain 
int higherX // higher x domain 
int frameSizeX // horizontal frame size 
int frameSizeY // vertical frame size 

假設我已經成功地計算F(X):

double valuesX[n] // x points from lower x domain to higher x domain 
double valuesY[n] // y points from lower x domain to higher x domain 

例如,如果lowerX = -4,higherX = 4 ,frameSizeX和frameSizeY = 1000,並且函數爲×^ 2:

valuesX[0] = -4, valuesX[1] = -3.992 | valuesY[0] = 16, valuesY[1] = 15.936064 

我試圖建立一個valuesYGraph []數組噸帽子應該這樣做:

(x = -4, y = 16) valuesYGraph[0] = 0, 
(x = -3, y = 9) valuesYGraph[*] = 218.75 ... 
(x = 4, y = 16) valuesY[999] = 0. 

* =取數組是= -3

我一直在試圖解決這個問題,在過去的幾天裏,但我一直在堅持。 JComponent具有讓+ y下降而不是上升的奢侈,這使得它更容易混淆......

增量也應該是普遍有效的(因爲它對x^2以及sin (x)或x^5 + 5)。

任何建議任何人?謝謝你的幫助!

回答

0

你似乎已經從屏幕的一半(500px)除以16得到了218.75的值,然後乘以9得到281.25,然後從500中減去。但是,如果你想讓東西居中,記住屏幕上應該有33個分區,而不是32個,因爲0佔據一個點。此外,您已將x範圍分爲1000個部分,而不是999個。

您需要將x範圍分成999個部分,而不是1000個,因爲如果要在0範圍內獲得3個離散x值-1,您將x除以2而不是3,以獲得將x值(0,0.5,1)分開的距離0.5。因此,你的第二個x值不應該是-3.992,而應該是(-4 +(8/999))= -3.991991991 ......等等。

然後爲你的y值做類似的事情 - >將你想要的最大範圍除以999,然後用它作爲你的增量,根據你的函數值確定正確的像素高度。