こんにちは、ヒガシです。
このページではエクセルVBAを使って、以下の図に示すように、物体の初期速度と放射角度から放物線を計算する方法をご紹介していきます。
初期条件を設定するだけで簡単に計算できるようになっていますので、ぜひご活用ください。
それではさっそくやっていきましょう!
※今回の計算は空気抵抗等は一切考慮しない計算になっています。あらかじめご了承ください。
物体の放物線を計算するサンプルコード
いきなりですが、本題である物体放物線を計算するサンプルコードをご紹介します。
Sub calc_parabola()
Dim Vini As Single, Angle As Single
Dim G_accele As Single
Dim total_time As Single, dt As Single
Dim data_num As Integer
'初期速度、発射角度、計算時間を指定
Vini = 10
Angle = 45
total_time = 1.5
'重力加速度、計算刻み時間を指定
G_accele = -9.8
dt = 0.1
'放物線計算処理
pi_v = WorksheetFunction.Pi
Vinix = Vini * Cos(2 * pi_v * Angle / 360)
Viniy = Vini * Sin(2 * pi_v * Angle / 360)
data_num = total_time / dt
Cells(1, 1) = "TIME"
Cells(1, 2) = "X"
Cells(1, 3) = "Y"
For i = 0 To data_num
time_v = i * dt
Cells(2 + i, 1) = time_v
Cells(2 + i, 2) = Vinix * time_v
Cells(2 + i, 3) = Viniy * time_v + 1 / 2 * G_accele * time_v * time_v
Next
End Sub
あなたがやるべきことは6~12行目の初期条件や計算条件を決めてあげるだけでOKです。
サンプルコードの実行結果確認
それでは先ほどのサンプルコードを実行してみます。
※強制的にシート上の情報を書き換えますので、何も作業をしていないシート上にて実行してください。
以下がその結果です。
何かしらデータが記述されていますね。
これが各時刻におけるX座標とY座標の履歴です。
念のためグラフ化してどんなデータか確認してみましょう。
いい感じに放物線ができていますね。
初期条件を変更して実行した結果
それでは先ほどのコードの初期条件を書き換えて実行してみましょう。
以下で実行してみます。
Vini = 20
Angle = 30
以下の結果が得られました。
初速を上げて滞空時間が長くなった結果、計算時間がたりなくなってますね。
このあたりはtotal_timeを増やすなりして対応してみると良いでしょう。
おわりに
というわけで今回は、エクセルVBAをつかって初期速度、放射角度から物体の放物線を計算する方法をご紹介しました。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント