ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

ペットボトルロケットのアニメーション描画

2010年05月07日 10時32分55秒 | ソフト開発日記
なんとなく、いろんなサイトを参考に
ペットボトルロケットの運動方程式を作って
オイラー法で解いて、軌跡を表示させてみた。(Java)

今度はロケットが軌跡を通る様子をアニメーションで表示させてみたい。
けど点のアニメーションではつまらないので、とりあえず長方形を
計算で出したロケットの角度を考慮して表示させてみることに。

(x, y)を現在のロケットの位置。
theta を現在のロケットの傾いている角度。
(rocket_xx[i], rocket_yy[i])を、ロケット位置を中心とした
  地面に水平な長方形の座標4点(i = 0~3)
(rocket_xx[i], rocket_yy[i])を、ロケット位置を中心とした
  地面と角度thetaだけ傾いた長方形の座標4点(i = 0~3)
とすると、ソースは次のように。

rocket_xx[0] = ( x - 10);
rocket_xx[1] = ( x + 10);
rocket_xx[2] = ( x + 10);
rocket_xx[3] = ( x - 10);

rocket_yy[0] = ( y - 5);
rocket_yy[1] = ( y - 5);
rocket_yy[2] = ( y + 5);
rocket_yy[3] = ( y + 5);

for (int k = 0; k <4; k++) {      - (rocket_yy[k] - y) * Math.sin(theta));
  rocket_y[k] = Y - (int)(y +(rocket_xx[k] - x) * Math.sin(theta)
     + (rocket_yy[k] - y) * Math.cos(theta));
}

g.drawPolygon(rocket_x, rocket_y, 4);

あれですね。
ものすごく単純。
長方形の4点それぞれに対して、
(x, y)を中心に角度thetaだけ回転するように
回転行列使って計算しただけです。

うまくいきました。