0

私が書いているJavaでの物理シミュレーションについて、ここで助けが必要です。シミュレーションは、物体の自由落下に関するものです。私はJavaを使用していますが、サードパーティのライブラリは使用していません。

アプレット (幅 1400px、高さ 700px) とスプライト (楕円形) が落ちています。重力は 10 m/s² に設定されています。楕円形のスプライトにニュートンの第 2 の法則を適用し、RK4 アルゴリズムを使用してスプライトの x 座標と y 座標を経時的に計算します。

これはすべて正常に機能します...シミュレーションで使用する寸法をスケーリングする方法がわからないことを除いて。

たとえば、1px で 1cm (幅と高さの両方) を表したいと思います。私の 1400px*700px アプレットの寸法は、実際には 14m*7m を表します。使った

Graphics2D.scale()

方法ですが、うまくいかないようです。私も重力を変えようと思ったのですが、これは私には適していないようです...

誰かが私の寸法をスケーリングする適切な方法を教えてもらえますか?

4

1 に答える 1

0

1400 x 700 ピクセルのアプレット描画領域があります。

14 x 7 メートルの物理領域があります。

メートルからピクセルにスケーリングするには、倍率を使用する必要があります。

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

ここまでは順調ですね。2 つの異なる倍率を使用すると、作図領域が歪んでしまいます。

楕円が (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 位置を計算して繰り返します。

于 2013-01-24T19:25:14.907 に答える