2013-01-24 100 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位置并重复。