弾道計算PC用アプリ

エアガンの弾道計算 PC用アプリ #

エアガンの弾道計算 PC用アプリを作成しました。

GUIはこのような感じになっています。
ballistics_application.png

1. 実行方法 #

  1. 下記のリンクからzipをダウンロードします。
    airsoft_ballistics_v1.0.2.zip (76MB)
Older version
  1. ダウンロード後に解凍すると、下記の3つのファイルが得られます。

    airsoft_ballistics_v1.0.0/
      ├ airsoft_ballistics.exe
      ├ LICENSE
      └ VERSION
    
  2. airsoft_ballistics.exeを実行します。

  3. パラメータを設定してCalculateを押します。

  4. 計算結果がairsoft_ballistics.exeがあるフォルダに下記の通り出力されます。

    airsoft_ballistics_v1.0.0/
      ├ airsoft_ballistics.exe
      ├ LICENSE
      ├ VERSION
      ├ input_parameters.txt
      ├ out_approx.txt
      └ x_z.png
    

また、設定でOutput all figuresにチェックを入れると、下記の通り結果が出力されます。

```
airsoft_ballistics_v1.0.0/
  ├ airsoft_ballistics.exe
  ├ LICENSE
  ├ VERSION
  ├ input_parameters.txt
  ├ out_approx.txt
  ├ x_t.png
  ├ x_y.png
  ├ x_z.png
  ├ y_z.png
  ├ x_vx.png
  ├ x_vy.png
  ├ x_vz.png
  ├ x_v.png
  ├ x_wx.png
  ├ x_wy.png
  ├ x_wz.png
  └ x_w.png
```

2. ファイルの説明 #

ファイルと出力されるデータを説明します。

ファイル 説明 出力に関係するパラメータ
airsoft_ballistics.exe 実行ファイル -
LICENSE ライセンスファイル -
VERSION プログラムバージョン -
input_parameters.txt (出力)計算時のパラメータ -
out_exact.txt (出力)計算結果 テキスト Solving EOM
out_approx.txt (出力)計算結果 テキスト Solving EOM
out_approx_w_solved.txt (出力)計算結果 テキスト Solving EOM
out_no_rotation_decay.txt (出力)計算結果 テキスト Solving EOM
x_t.png (出力)横軸: 時間(s), 縦軸: 位置x(m) Output all figures
x_y.png (出力)横軸: 位置x(m), 縦軸: 位置y(m) Output all figures
x_z.png (出力)横軸: 位置x(m), 縦軸: 位置z(m) Output all figures
y_z.png (出力)横軸: 位置y(m), 縦軸: 位置z(m) -
x_vx.png (出力)横軸: 位置y(m), 縦軸: 速度x(m/s) Output all figures
x_vy.png (出力)横軸: 位置y(m), 縦軸: 速度y(m/s) Output all figures
x_vz.png (出力)横軸: 位置y(m), 縦軸: 速度z(m/s) Output all figures
x_v.png (出力)横軸: 位置y(m), 縦軸: 速さ|v|(m/s) Output all figures
x_wx.png (出力)横軸: 位置y(m), 縦軸: 回転量x(rot/s) Output all figures
x_wy.png (出力)横軸: 位置y(m), 縦軸: 回転量y(rot/s) Output all figures
x_wz.png (出力)横軸: 位置y(m), 縦軸: 回転量z(rot/s) Output all figures
x_w.png (出力)横軸: 位置y(m), 縦軸: 回転量の大きさ|w|(rot/s) Output all figures

3. ソースファイル #

exeの実行にソースファイルは必要ありません。 しかし、細かな調整をしたい方もいるかと思いますので、ソースを公開します。

(python) airsoft_ballistics_src_v1.0.2.zip (~400kB)

Older version

main_ballistics.pycompute_ballistics(...)がメインの関数となります。

元々compute_ballistics()をmain関数としてこれを直接pythonで実行していましたが、それをGUIで制御するためにairsoft_ballistics.pyでwrapした、という構造になっています。

詳細はコードを見て下さい。ざっくりと下記の構造となっております。

フォルダ 説明
class_def クラス定義。ほぼ読み込み専用の構造体として使用。
physical_quantities 物理量の計算。主に流体に関する物理量。
ivp_functions 初期値問題の計算。運動方程式はこの中。
output_functions テキストデータの出力関数。

MITライセンスで公開しています。