なんとなく、いろんなサイトを参考に
ペットボトルロケットの運動方程式を作って
オイラー法で解いて、軌跡を表示させてみた。(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だけ回転するように
回転行列使って計算しただけです。
うまくいきました。
ペットボトルロケットの運動方程式を作って
オイラー法で解いて、軌跡を表示させてみた。(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だけ回転するように
回転行列使って計算しただけです。
うまくいきました。