バレルロールの数学

水泳のキックターンとか棒高跳びとか、三次元で複数の回転をする動作は直感的に把握するのが難しいもんです。
最近流行の「バレル・ロール」もそう。Googlegoogle:do a barrel rollと検索すると画面が回転する、というもの。もともとはゲーム Star Fox 64でのセリフから来てるようです。http://www.youtube.com/watch?v=wIkJvY96i8w

実際のバレル・ロールは飛行機で左右どちらかににバンクしつつ操縦桿を引いて宙返りも同時に行うことで三次元的に螺旋の軌跡を描く挙動です。イメージするのが難しいのだけど、実は三次元の回転は数学的には非常に単純です。
回転する時にはその「軸」があるわけで、三次元の回転というのはその軸の方向を向いて、長さが回転速度に等しいベクトルで表現できます(ただし4次元以上ではこういうことはできません。)
このベクトルを\vec{\omega}とすると、重心から見て\vec{x}の位置では\vec{\omega}\times \vec{x}の速度になる、と表現できます。×は外積記号で、\vec{\omega}\vec{x}の両方に垂直なベクトルを作る記号です。
ここで二つの回転\vec{\omega}_1\vec{\omega}_2を同時に行うことを考えると、\vec{x}の位置では\vec{\omega_1}\times \vec{x}+\vec{\omega_2}\times \vec{x}の速度になるけど、これは(\vec{\omega_1}+\vec{\omega_2})\times \vec{x}とかけるので、単純にベクトル\vec{\omega}_1\vec{\omega}_2を足し算してできるベクトルを軸として回転することと同じです。
飛行機の場合、機種上げは横に向いた軸の周りの回転

左右どちらかへのバンクは前後に向いた軸の周りの回転です

この二つを合成すると、斜め前方を向いた軸の周りの回転ということになります。

Wikipediaの記述では、標準的なバレルロールというのはロールと機種上げを同じ速度で行い、この軸がちょうど45度を向くように行うようですwikipedia:barrel roll
斜めの軸の周に回転させると、機首の方向はこの軸周りに斜め前方で円を描きます。

機首の方向と進行方向はほぼ一致しているので、進行方向がこういう感じで変化すると軌跡は螺旋となります。

空中戦でバレルロールを使うのは、自分が敵の後ろかつ旋回の内側にいて、そのままでは進路を追い越してしまう場合に使うそうで、敵の旋回方向に若干ロールしてから一気に機首を30度ほど起こし、そこから逆方向にバンクしつつ通常のバレルロールよりも機首上げをタイトに行う(軸がより左右に近い)機動のようです。途中までやると敵より上空にいてそのまま機首を目いっぱい引けばちょうど前方に敵がくるという状況を作れます。


パイロット視点だと、多分こんなふうに見えるのではないかと。Ace Combat 04 なんかで、例えば黄色機を追う時に相手の角度が急で後ろを捉え切れないという時に機種上げは継続しつつ敢えて反対向きに一回転ロールすると後ろを取れたりするけど、そういう挙動なのかも。

回転の合成は、たとえば斜めになったコマの運動にも使えます。コマの回転軸は軸方向、コマを倒そうとする動きは地面に水平な回転軸での回転をしようとします。これらを合成すると回転軸が回転するような運動が出てきます。

しかしこれらはすべて剛体の話。内部自由度がある場合、例えば関節を動かせる宇宙空間でのモビルスーツなんかはもっと複雑になります。下にいるリックドムを狙いたい場合、足先から後ろに噴射してから体を丸めて回転し90度回った所でまた体を伸ばすとか。そのへんを直感的に理解できるのがニュータイプ