2013-01-24 94 views
0

我需要一些幫助,在這裏我用java寫一個物理模擬。模擬是關於身體的自由落體。我使用的是java,我不使用任何第三方庫。物理模擬中的縮放尺寸

我有一個applet(1400px寬,700px高)和一個精靈(這是橢圓形)掉下來。重力設置爲10 m /s²。我將第二個牛頓定律應用到我的橢圓形精靈中,然後使用RK4算法計算我的精靈隨着時間的x和y座標。

這一切工作正常......除了我不知道如何縮放我在我的模擬中使用的尺寸。

例如,我希望1px代表1cm(寬度和高度)。因此,我的1400px * 700px applet尺寸將代表14m * 7m的實際尺寸。我用

Graphics2D.scale()

方法,但它似乎簡化版,工作。我也想改變重力,但這似乎不適合我...

有人能告訴我一個正確的方式來縮放我的尺寸?

+0

您每米有100個像素。以米爲單位計算您的x和y位置,然後將x乘以100,y乘以100以繪製出來。 –

+0

@GilbertLeBlanc如果我按照你的建議,我將需要一個尺寸爲14m * 7m的小程序,它不適合任何屏幕。我是我錯了? (或許我只是不明白你的意思)... –

回答

0

您有1400 x 700像素的小程序繪圖區域。

你有一個14×7米的物理區域。

爲了從米到像素進行縮放,您必須使用縮放因子。

1400 pixels/14 meters = 100 pixels per meter. 
700 pixels/7 meters = 100 pixels per meter. 

到目前爲止好。如果你有兩個不同的比例因子,你的繪圖區域會被扭曲。

我們假設橢圓從(0,0)開始。

所以我們計算橢圓的第一個位置。假設第一個計算的位置是

x = 2.45 
y = 3.83 

因此,使用我們想出了縮放係數:

pixel x = 2.45 meters x 100 pixels per meter = 245 pixels. 
pixel y = 3.83 meters x 100 pixels per meter = 383 pixels. 

我們的物理面積有增加x到右方,y增加了下來。幸運的是,我們的繪圖區域向右增加了x,並且增加了y。

所以,我們不必擔心變化的跡象。

在(245,383)處繪製橢圓。

計算下一個x,y位置並重復。