- 初心者歓迎 スレ立てる前に此処で質問を 903
838 :831[sage]:2018/11/10(土) 01:07:32.17 ID:JZyldm1v - >>835
ちょっと長くなるけどこんな感じ 砲弾には地球の重力加速度ベクトルg(r)、空気抵抗による加速度ベクトルD(r, v)、 地球の自転で生じる遠心力による加速度ベクトルCe(r)とコリオリの力による 加速度ベクトルCo(r, v)がかかり、トータルの加速度ベクトルはこれらの足し合わせになる (rは砲弾の3次元空間内の位置ベクトル、vは砲弾の速度ベクトル(速さと針路)で、 g(r)は重力加速度が砲弾の位置で、D(r, v)は空気抵抗が砲弾の位置と速さと針路で 決まるってことを意味している) 具体的には g(r) = -(M/|r|^3)*r (1) D(r, v) = -(0.5*ρ(r)*S*C*|v|/m)*v (2) Ce(r) = -(w^2)*h (3) Co(r, v) = (2*w)*(n×v) (4) 各記号は M:地心重力定数(ある決まった値) ρ(r):砲弾のある位置での大気密度 S:砲弾の断面積 C:砲弾の抗力係数 m:砲弾の質量 w:地球自転の角速度 h:砲弾の位置から地球の自転軸に垂直に向かうベクトル n:地球の中心から北極点の方向に向いた長さ1のベクトル n×v:ベクトルnとベクトルvの外積
|
- 初心者歓迎 スレ立てる前に此処で質問を 903
839 :831[sage]:2018/11/10(土) 01:08:29.96 ID:JZyldm1v - 続き
空気抵抗は高度、つまり砲弾の位置が決まれば計算式があるので計算できるし、 それ以外のパラメータの大半は初期条件で与えられるので、まずやるべきことは 与えられた初期条件(初期位置r0、初速度v0)から(1)〜(4)の式を使って最初の 加速度ベクトルa0を求めることになる そうやってa0がわかったら、次は速度と加速度は短い時間Δt(例えば0.1秒)の間には 変化しないとみなして、r0からΔtの間に進んだ後の位置r1を計算する これはr1 = r0+v0Δtで計算でき、r1における速度はv1 = v0+a0Δtで計算できる そしたら次はr1における重力、空気抵抗、遠心力とコリオリの力を(1)〜(4)式で計算して r1における加速度a1を求める そしたらまたv1とa1がΔtの間は変化しないと考えて、r1から更にΔt経過後の位置r2と速度v2を r2 = r1+v1Δt、v2 = v1+a1Δtで計算する 後はこの計算をコンピュータで延々繰り返せば砲弾の位置と速度が求められるって寸法
|
- 初心者歓迎 スレ立てる前に此処で質問を 903
840 :831[sage]:2018/11/10(土) 01:14:33.38 ID:JZyldm1v - オイラー法ってのはこんな感じ
実際にはΔtの間は加速度も速度も変化しないなんてことはないわけだけど、 そこはΔtを十分小さくして小刻みに計算すれば誤差はある程度小さくできる (あまり小さくしすぎるとコンピュータの計算精度の限界で逆に誤差が出るけど) あと>>839の2行目の最初は空気抵抗じゃなくて大気密度の間違いなので訂正
|
- 初心者歓迎 スレ立てる前に此処で質問を 903
845 :名無し三等兵[sage]:2018/11/10(土) 08:48:26.51 ID:JZyldm1v - >>844
>>838-840のアルゴリズムで弾道計算するプログラムは 前に作ってVectorで公開してるんでよければどうぞ https://www.vector.co.jp/soft/dl/winnt/edu/se516541.html 元々は弾道ミサイル迎撃の簡易シミュレーション用に作ったものだけど、 初速を与えて砲弾を飛ばすモードがあるんで、>>828で言ってるような シチュエーションも試せるよ
|
- 初心者歓迎 スレ立てる前に此処で質問を 903
847 :名無し三等兵[sage]:2018/11/10(土) 10:00:47.99 ID:JZyldm1v - >>846
弾道ミサイルのタイプでカスタムを選ぶと飛翔フェイズが選択できるようになるんで、 そこでミッドコースかターミナルフェイズを選ぶと初速を与えての投射モードになる 後は位置、標高、砲弾の初速&直径&質量&抗力係数&発射方向などを指定すればOK (ミサイルとなっている部分は砲弾に読み替える) 後の細かい部分についてはPDFを読んで適当に弄ってみてね
|