1

現在、車(JPanel)がジャンクションに近づき、信号が緑色に変わるのを待ってまっすぐ進むという簡単なアニメーションがあります。ただし、次のステップに進みます。ここでは、車を滑らかなカーブで右に90度回転させて、垂直な道路に曲がります。私はそれがどのように見えるかを大まかにスケッチしました、そして曲線は私が車を回したい方法を表しています:

ターニングカー

これを行う方法がよくわかりません。ある種のベジェ曲線を表す必要があると思いますか?または、車を回転させるための行列変換?

誰かがSwingでこれを行うための最良の方法についてアドバイスを与えることができますか?

4

1 に答える 1

3

Javaのグラフィックスを初めて使用する場合は、このチュートリアルをお勧めします。あなたがしていることをコーディングするとしたら、2つの選択肢があります。

まず、最も簡単な方法として、「最初に直進し、次に、私が向きを変えている角を中心とする円のエッジに沿って90度回転し、次に再び直進する」とモデル化できます。JPanelこれを行う最も簡単な方法は、あなたを描くaを定義することですImage(はい、JPanel。背景をペイントしない場合は、JPanelを互いに重ねることができます。正しい順序でペイントされます。背景JPanelを不透明にして、次のフレームを描画する前にクリーンアップします)、AffineTransform希望の位置に画像が表示されるようにします。速度が一定に見えるように、変換の増分を調整する必要があります。試行錯誤、または少しのジオメトリ(半径Rの90ºはR*pi/2.0湾曲したパスに沿った総移動を意味します)は、そこに役立つでしょう。

難しい方法は、車のルートを任意の形状(たとえば、ベジェ曲線を使用して定義できます)と見なし、PathIteratorそこから平坦化されたものを抽出し、そのイテレーターに沿って等間隔のジャンプを進め、必要な回転を計算することです。カーブに沿った位置と任意のポイントでの方向(2つの連続するサンプルを取得し、これらのサンプルに従って車を位置合わせすることで、方向を推定できます)。これは、上記の方法を使用するよりも困難ですが、車が任意の複雑な経路をたどることができます。

于 2012-11-25T13:49:50.313 に答える