5

Graphics2D クラスの基本を学び始めたところです。これまでのところ、さまざまなオブジェクトを描画して実装ActionListenerし、実際に画面上で移動することができますonKeyPress。これまでのところ、私はもっと複雑なことを考えていました。オブジェクトへのパスを指定し、その特定のパスでのみアニメーション化したいと考えています。

空に線を引くと、飛行機はその線にくっついて、その特定の線に沿って飛行する必要があります。今それは可能ですか?

なんらかのコードは必要ありませんが、いくつかの異なる方法やアイデアで、これに取り掛かることができます。私のアイデアの視覚化の詳細は次のとおりです。

出発地点 :

ここに画像の説明を入力

終点 :

ここに画像の説明を入力

上記のように、私の黄色いボックス(将来の平面)は、アニメーション化中に指定されたパスに固執する必要があります(パスの灰色の線)

これまでの私の研究は、

javaのパスなどの流行語を検索し、クラスを見つけましPath2DGeneralPath。これを使用してこれを解決できるかどうかは誰にもわかりません。

ありがとう

4

4 に答える 4

2

すごい !

IT の最初のステップを思い出させてくれます。この単純な数学のすべてをどれだけ楽しんだが、それが画面上で物事を動かす. :)

必要なのは、実際には線形補間です。他の種類の補間があり、一部の API は概念の優れたカプセル化を提供しますが、主なアイデアは次のとおりです。これは非常に頻繁に必要になります。

パスを書き直す必要があります

y = f (x ) 

時間の関数として:

時間 0 でアイテムは開始位置にあり、時間 1 で最後に到達します。次に、必要に応じて時間 (t) をインクリメントします (たとえば、0.001 ミリ秒ごと)。

したがって、単純な線形パスの式は次のとおりです。

x = xstart + (xend-xstart) * t
y = ystart + (yend-ystart) * t

t が変化すると、オブジェクトはパスに沿って直線的に移動するだけで、速度はすべてのパスで一定になります。たとえば、最後にある種の引力を想像することができます。これは、二次加速度 (t ではなく t^2) によってモデル化されます ...

よろしく、ステファン

于 2011-08-26T16:51:32.197 に答える
1

まず、a 点から b 点に移動できるようにします。これは単純な代数で行われます。

次に、パスを取得してポイントに変換する機能を作成します。次に、曲線を作成するときは、その曲線に沿ってポイントからポイントへと移動するだけです。

これは最も基本的な方法であり、ほとんどの場合に機能します。

于 2011-08-26T16:44:59.900 に答える
1

あなたが話しているのは、単純な 2D グラフィックスとスプライトです。それだけで十分な場合は、Java についてはJava 2D スプライト をご覧ください。カメラの視点にもっと傾いているか、最終的にはカメラの視点を使用し、さまざまな角度からアニメーションを表示したい場合は、OpenSource Java 3D.org の Java 3D を使用します。どちらの場合でも、オブジェクトを線に沿って単純に変換する必要があります。これは、2D または 3D で非常に単純です。

于 2011-08-26T16:46:49.983 に答える
1

私のオープン ソース カレッジ プロジェクトであるLANSimのコードを試してみることができます。そのコードは Code メニューで利用できます。それはあなたがやろうとしていることと似ています。

于 2011-08-26T17:21:59.610 に答える