Unityでフライトシム
翼を短冊状に分けて考える
(脱2次元翼)
このページは書きかけ
(最終更新:24/3/24)
前の翼のシンプル実装の項に比べ、ここらへん以降は自分の理解が怪しい(特に三次元翼の細かいところが良く分かっていない)ためアウトラインの説明だけになりますが、シンプル実装の方がわかっていると応用でこちらの考え方も取り込めるかもしれません。
※以下はネット情報で検索したとかChatGPTに聞いたとかレベルの大雑把な理解です。
航空力学の専門家でも何でもないので普通に間違ってる可能性があります
翼のシンプル実装編では、Unityで簡易的に揚力・抗力を実装しました。
その際、下図のように、「1つの翼=1つの塊」として扱っていました。
左と右は分けているものの、それぞれが一枚板になっています。
これはシンプルでわかりやすいという点で良いのですが、もう少しリアルさを目指す場合、このやり方ではいくつか問題があります。
一枚板としてのシミュレーションは大雑把すぎる
1つの翼を1塊として扱うということは、1つの翼が1つの迎角、1つの速度、1つの揚力係数しか持てないことを意味します。
揚力を例に取ると、片方の翼の端から端まで、均一な揚力が発生していると仮定しているわけです。
?
しかし実際には、飛行機が仮に水平飛行していても、様々な理由から、翼根と翼端でまったく同じ量の揚力が発生しているわけではありません。
① ねじり下げ
例えばねじり下げ。1つの翼でも、翼根と翼端では取り付け迎角が違っています。
翼端は角度が浅くなっていて、失速角に遠くなるので失速しにくくなるという利点と引き換えに、常時発生している揚力も小さいことになります。
こうした翼根⇔翼端の揚力差が一枚板のシミュレーションでは抜け落ちます。
しかしそれ以上に問題なのは、一枚板の場合、翼根と翼端に角度差をつけることができないので、翼のかたまり全体が「失速角に達している or いない」の2択になってしまうという点です。
(仮に迎角15度が翼の失速角だとすると、迎角15度になったとたんに翼全体が丸ごと失速するので、機体が一気にカクッとひっくり返ったりします。)
② 翼型やテーパー
テーパー翼や楕円翼などは翼端の方が翼弦が短くなっているため、やはり翼端の方が発生する揚力は小さくなります。
1枚板として扱う場合は完全な矩形扱いになるので、こうした差も再現できません。
③ 三次元翼としての揚力の偏り
また、仮に捩り下げやテーパーなどがついていなかったとしても、翼端渦という空気の流れの影響によって、翼端に近い場所ほど揚力が減少します。
こうした諸々の理由によりて、飛行機の翼が発生している揚力は、翼根と翼端で一定ではありません。
実際はこんな風に翼端ほど減ってそう(図は適当です)
④ 速度も一定とは限らない
さらに、速度も翼根⇔翼端で違うことがあります。
左図のようにフラットスピン状態で落ちてるとか、高速ロール機動とかの時、機体の中心線から離れた翼端ほど大きな速度を受けるはず。
また天候が荒れている時とかに、翼根と翼端で受けている風の速度が違ったりすることもあるかもしれません。
このように1枚の翼の中でも、翼根⇔翼端で速度に違いが生まれることがありえます。
プロペラやヘリコプターのローターブレードは、これのもっとはっきりした例という感じ。
こうしたものは揚力だけでなく、抗力や回転モーメントについても同じことが言えます。
こうした部分をより細かくシミュレーションするために、よくフライトシミュレーターで用いられているっぽいのが、翼を短冊状に分ける考え方です。
「翼素理論(Blade element theory )」とか「揚力線理論(Lifting line theory )」とか呼ばれるものがこれに近い考え方だと思います。
翼素理論の方は「Blade~」となっている通り、どちらかというとプロペラブレードとかヘリコプターのローターブレードとか(あと風車とか)の回転翼と関連付けられて検索に出ることが多い気がしますが、どちらも風の速度を受けて揚力を発生させる翼であるという部分は同じで、速度を回転によって得ているか、前進によって得ているかの違いです。
翼を短冊状に刻む
細かい翼(翼素)に分けて考える
短冊状に切り刻んだ翼のうちの1つの部分を以後「翼素」と呼ぶことにします。
基本的な考え方は簡単で、各翼素が行う計算は、一枚板の翼がやっていた計算とほとんど同じです。ただ、翼の面積を翼全体ではなく翼素の小面積に変え、迎角や速度も翼素ごとに計算します。
public float CalculateLift(float coefficient, float surfaceSize, float velocity, float airDensity)
{
return 0.5f * airDensity * (velocity * velocity) * surfaceSize * coefficient;
}
翼を一枚板として扱っていた時と同じメソッドですが、今度はこれが翼素単位で呼び出される形になります。
2次元翼の限界
ところで上の計算は、いわゆる2次元翼的な揚力を求めるだけです。
2次元翼というのは、上のようなメソッドで単純に各翼素が各々で揚力を算出している状態。各々を独立したセクションとして、そのセクションの翼型の2次元断面だけで揚力を求めているわけです。
しかし前述しましたが、翼には翼端渦というものがあるので、翼幅方向にも空気の流れが発生しています。
こうした横方向の空気の移動なども取り入れ、翼の2次元断面だけでなく翼全体を3次元的に捉えたのが3次元翼的な計算です。
具体的には、隣の翼素や離れたところの翼素からの影響も計算に入れます。
まず、2次元翼的な断面を考えると、断面が前(左)から風を受けつつ正の迎角をとり始めると、その2次元翼断面周りには時計回りに循環するような力が生まれる(らしい)です。
気流が上面では加速され、下面では減速される
圧力差が揚力を生む
循環しようとする流れは(失速してなければ)翼の迎角が大きいほど大きくなります。上面は加速することで圧力が低くなり、下面は減速することで圧力が高くなるという流速差が揚力を生むので、迎角が大きくなれば循環しようとする力も大きくなり、上面と下面の差が大きくなって揚力も大きくなる。
この循環の強さが揚力の強さに関係しているのですが、これが翼の部分の他の影響も受けて