Simulationプログラムの作り方

Simulationプログラムの作り方
ボールを初速Vで、水平からw度の角度で斜めに
投げたとき、ボールの軌跡は次式で表せます。
X = V * cos(w) * t 式(1)
Y = V * sin(w) * t - 1/2 * g * t2
式(2)
この式を用いて、シミュレーションを行う。
Simulationプログラムの作り方
1.計算パラメータの収得
入力するパラメータは、初速V(m/s)、
角度w(度)、重力加速度g(m/s 2)
2.計算ループの作製
計算ループの終了条件を決めておく
必要がある。
3.計算結果の表示方法
Console関数を用いて計算結果を数値
SDLによるグラフィック
Simulationプログラムの作り方
1.パラメータについて
必要なパラメータは、V,w,gです。
これらはPrintfとScanfをもちいて、
コンソール画面から入力する。
SetConsole(); /*コンソール画面の起動*/
Printf("パラメータを入力してください\n");
Printf("初速V = ");
Scanf("%lf",&V);
Printf("角度w = ");
Scabf("%lf",&w);
Printf("重力加速度g = ");
Scanf("%lf",&g);
Simulationプログラムの作り方
2.計算ループについて
この問題では、計算する時間tmaxが算出できる。
これをつかうことで計算ループを作製できる。
tmax = 2.0*V*sin(w*M_PI / 180.0)/g;
for (t = 0.0;t <= tmax;t += dt){
/* t秒後のX座標の計算 */
x = V * cos(w*M_PI / 180.0) * t;
/* t秒後のY座標の計算 */
y = V * sin(w*M_PI / 180.0) * t - 0.5 * g * t * t;
}
Simulationプログラムの作り方
3. 計算結果の表示
•計算結果を配列にいれて保存しておき、
あとで表示する方法
•計算ループ中で表示を行う方法
Simulationプログラムの作り方
3. 計算結果の表示
•計算ループ中で表示を行う方法
for (t = 0.0;t <= tmax;t += dt){
/* t秒後のX座標の計算 */
x = V * cos(w*M_PI / 180.0) * t;
/* t秒後のY座標の計算 */
y = V * sin(w*M_PI / 180.0) * t - 0.5 * g * t * t;
/* コンソールへの軌跡の表示 */
Printf(" %lf 秒:(x,y) = (%lf,%lf)\n",t,x,y);
}
Simulationプログラムの作り方
3. 計算結果の表示
•計算ループ中で表示を行う方法
for (t = 0.0;t <= tmax;t += dt){
/* t秒後のX座標の計算 */
x = V * cos(w*M_PI / 180.0) * t;
/* t秒後のY座標の計算 */
y = V * sin(w*M_PI / 180.0) * t - 0.5 * g * t * t;
/* コンソールへの軌跡の表示 */
Printf(“ %lf 秒:(x,y) = (%lf,%lf)\n”,t,x,y);
/* SDLでの軌跡の表示 */
putpixel(screen, x+X_OFF, -y+Y_OFF, Green);
SDL_UpdateRect(screen,0,0,0,0);
SDL_Delay(100);
}