【Excel】野球の投球軌道シミュレーションPart2【リアル野球ゲーム番外編】

この記事にはPRが含まれます。

今回も前回に続きExcelを使った野球の投球軌道シミュレーションをしていこうと思います。

あわせて読みたい
【Excel】野球の投球軌道シミュレーションPart1【リアル野球ゲーム番外編】 こんにちは、前回リアル野球ゲームを作ると言いました。 https://shikaku-koko.com/batting-unity-0/ ただ、調べてみるとUnityには現実に即した正確な物理演算ができな...

↓ 毎度お世話になっている参考サイトさん

エクセルで野球ボールの軌道計算

目次

前回までの実装内容

前回は投球にかかる力や物理の基本的な話を勉強してきました。

そして、Excelを使い力のかかる向きを進行方向のみで

空気や重力のような現実世界の物理を全て無視して考えました。

今回は前回の進行方向への「等速直線運動」に加え、上記のように重力を実装しようと思います。

第3回 軌道シミュレータver.2 -自由落下運動-

今回も参考記事に従って作っていきます。

今回参考にする記事 第3回 軌道シミュレータver.2 -自由落下運動-

はじめに

今回の「進行方向の力」と「重力」のみを考えるような動きを「自由落下運動」と言います。

これは物理初心者の私でも知っていました!笑

確か、高校物理のほとんどの問題が空気抵抗を考慮しない「自由落下運動」でしたね。

重力は、質量[kg]×重力加速度[m/s2]で求められます。

参考記事では、重力加速度が高校物理同様 9.8 としていますが

今回私はできる限り正確にシミュレーションしたいので重力加速度は、9.80665 とします。

余談 ガリレオによるピサの斜塔実験

余談ですが、物の落ちる速度の話を調べてみると面白い物理法則がありました。

それが「落体の法則」です。

これは空気の真空中での落下、すなわち自由落下において速さと重さは関係ないというものです。

現実世界で考えると重いものが早く落下し、軽いものは遅く落下するというのが当たり前ですよね。

ただ、自由落下においては質量関係なく全て同時に落下します。

空気があると落下速度が質量によって異なるのは、空気抵抗が関係しているからです。

計算方法について

重力は -0.5×g×t2 です。

この式は高校物理で習いましたね。

私も今だに覚えていました。

計算式は以下のようです。

x = x0 + v0 × cosθ × cosφ × t

y = y0 + v0 × cosθ × sinφ × t

z = z0 + v0 × sinθ × t – 0.5 × g × t2

x0, y0, z0:リリース位置 v0:リリース時の球速

θ:上向きリリース角度 φ:横向きリリース角度

t:リリース後経過時間 g:重力加速度

今回の重力は下向き、すなわちZ軸方向にしか力がかからないので

Z座標の計算式以外のX座標とY座標の計算式は前回そのままです。

実際にExcelでシミュレーションしてみる

前回はデータが、ムチャクチャでボールが地面にのめり込んだり

サイドスロー並みの横移動だったので、データをしっかり修正しました。

プロ野球の人のラプソードのデータを参考に修正したのである程度は正確だと思います。

あと、前回のプロット数が少なすぎて見にくかったので、参考記事と同様の 0.02s 間隔にしました。

重力加速度のgを追加しました。

今回の定数に関する変更点はこれだけです。

先ほども言った通り、X座標は前回そのままです。

=$C$2+$C$6COS(RADIANS($C$7))COS(RADIANS($C$8))*G3

Y座標は前回そのままです。

=$C$3+$C$6COS(RADIANS($C$7))SIN(RADIANS($C$8))*G3

Z座標は前回の計算式から重力 – 0.5 × g × t2 を引くだけでOKです!

=$C$4+$C$6SIN(RADIANS($C$7))G3-0.5$C$9G3*G3

重力加速度も定数なので F4 か $ で固定してください。

できました!

今回は前回と比較できるように色分けして表示してみました。

オレンジ色のグラフが前回の空気・重力を考えない投球軌道です。

青色のグラフが今回の自由落下運動の投球軌道です。

しっかり落ちていますね。

今回はまだ続きます。

第5回 軌道シミュレータver.3.0 -抗力-

次は抗力という、ボールの進行方向に対して逆にかかる力を計算して再現していきます。

はじめに

これで4方向のうち3つ目ですね。

この抗力は主に空気抵抗というやつですね。

今回は抗力のみなのでX軸方向の空気抵抗です。

計算方法について

空気抵抗Dの公式は以下の通りです。

D = CD × ( 0.5 × ρ × v2 ) × A

(CD:抗力係数 ρ:空気密度 v:速度 A:断面積)

速度以外は定数です。

ということは空気抵抗Dは速度vに依存するということです。

また、抗力はX軸方向なので今回変更する計算式はX座標のみです。

実際にExcelでシミュレーションしてみる

X座標の計算式について理解していきます。

計算式自体は参考サイトにあるので、あとは理解していくだけです(笑)

空気抵抗は先ほどの式をそのまま使い

D = CD × ( 0.5 × ρ × v2 ) × A

加速度の求め方は、高校物理で覚えた運動方程式 m(質量)×a(加速度)=F(加えた力)を変形して

a(加速度)=F(加えた力)÷ m(質量)で求められます。

a = -F / m

すなわち、今回の計算における加速度は D(空気抵抗) ÷ m(質量)で求められます。

速度は、速度の公式より

dx/dt = vx

これらの式から、

加速度

a = d2x/dt2 = -CD × ( 0.5 × ρ × (dx/dt)2 ) × A / m

速度

dx/dt = ∮(d2x/dt2)dt

位置

x = ∮(dx/dt)dt

それぞれ、応用の物理で勉強した内容ですね。

若干記憶にありましたが、これはもうかなりガチ理系ですね、

改めて物理の微分と積分の関係性を調べ直しました笑

t = 0 のとき

速度

dx/dt = v0 × cosθ × cosφ

位置

x = x0

Y座標とZ座標の計算式は以下のようにこれまで同様です。

y = y0 + v0 × cosθ × sinφ × t

z = z0 + v0 × sinθ × t – 0.5 × g × t2

x0, y0, z0:リリース位置 v0:リリース時の球速

θ:上向きリリース角度 φ:横向きリリース角度

t:リリース後経過時間 g:重力加速度

実際にExcelでシミュレーションしてみる

では実際にExcelに入力していきます。

上記のように定数をまず設定しました。

これまでに引き続き、今回は ρ, m, A, CDを定数として新たに設定します。

ρ:空気密度は状態方程式より求められます。

状態方程式より気温と気圧が分かれば ρ:空気密度を求めることができます。

私はこのサイトを使って計算しました。

密度の計算

気温と気圧は、私の住んでいる愛知県の春日井市の昼時の平均情報(8月)を使いました。

m:質量は硬式野球ボールの規定に則って 0.1417~0.1488kg の平均である 0.14525kg を使用しました。

A:断面積は硬式野球ボールの規定に則って

直径 72.93~74.84mm の平均を求め、半径に変換して、π × 半径 × 半径で求めました。

CD:抗力係数は求めることが、かなり難しく(実際に実験や計算をしないといけない)

また球種によっても変化しますが、野球ボールに関する先行研究をいくつか調べてみたところ

直球系の球種に関しては、どれも大体 0.3 付近でした。

なので、今回は 0.3 として計算します。

次に t となる描画間隔ですが

参考記事によると、描画間隔を短くすればするほど正確なシミュレーションができるということなので

0.2s から 0.1s に変更しました。

ちょいちょい理解していないところがあってすみません笑

加速度と速度の欄を追加しました。

先ほどの t = 0 のときの速度計算式より t = 0 のときの速度を入力。

=C6COS(RADIANS(C7))COS(RADIANS(C8))

次に加速度を先ほどの計算式を入力していきます。

=-$C$130.5$C$10N3N3*$C$12/$C$11

また、今度は t = 0ではないときの通常の速度を求める計算式を入力していきます。

ただ、速度を求めるには積分をするのですが、積分を分解して普通に計算していきます。

あっすみません、t が 0 からじゃなかったので修正しました。

0.01 だったセルを 0 に変えるだけで全部自動で値が変わるのでExcelは便利ですね ^^;

t = 0 のときの位置の計算式を入力します。

といってもリリースポイントの初期値そのまま渡すだけですが笑

また、今度は t = 0ではないときの通常の速度を求める計算式を入力していきます。

ただ、こちらも速度同様、位置を求めるには積分をするのですが、積分を分解して普通に計算していきます。

Y座標はこれまでと同様です。

=$C$3+$C$6COS(RADIANS($C$7))SIN(RADIANS($C$8))*G3

Z座標もこれまでと同様です。

=$C$4+$C$6SIN(RADIANS($C$7))G3-0.5$C$9G3*G3

できました!

空気抵抗レベルの変化なのでそこまで大きな変化がなく、わかりにくいと思いますが

実は今回のグラフ(灰色)は最大時間を 0.5s から 0.6s にしています。

しっかり抗力がかかって、0.5s ではキャッチャーまで届きませんでした。

追記:2023/08/11

すみませんっ!

これでは重力が実装されていませんね。

上記画像が正しい計算式です。

重力(-0.5$C$9L3*L3)を追加するだけです。

=$C$4+$C$6SIN(RADIANS($C$7))L3-0.5$C$9L3*L3

これで揚力以外実装できました!

全然違いますね笑

ほんと、すみません。

最後に

今回までで、ボールにかかる力上下前後のうち、上以外にかかる力を全て実装しました。

本当は今回の記事で全て実装するつもりでしたが、空気抵抗の計算が想像以上に大変で時間がかかってしまいました。

なので、次でやっと完成です。

時間がかかってすみません。

ではまた。

どんどん記事をシェアしよう!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次