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); }
© Copyright 2024 ExpyDoc