体向について

こないだの日記で、DDRのダブルについて回転角度という側面から難易度を直感的に把握する指標を云々って話がありましたが、その中で勝手に使っていた「体向」という言葉の意味とその求め方、また体向を用いた「回転角度」の求め方について説明します。

「体向」というのは、直観的にはシンプルに画面に対する体が為す角度という意味です。*1
より正確には、あるオブジェクトに対して、その時プレイヤーが左足で踏んでいるパネルと、右足で踏んでいるパネルを結ぶ直線と画面が為す角度を「体向(または体向角度)」として定義します。

その時プレイヤーが左足/右足で踏んでいるパネルというのは、普通の場合*2そのオブジェクトとそのオブジェクトの直前のオブジェクトにおいて、それぞれプレイヤーが踏んでいたパネルによって定まります。なお、オブジェクトを左右どちらの足で踏むかについては、予め譜面に対して定まっているものとします。ただし、直前のオブジェクトが十分間隔がある場合には一旦体向がリセットする余裕があるので、必ずしも直前のオブジェクトには依存しません。また、1歩目は基本的にシングルなら←→のパネルをそれぞれ左右の足で踏んでいる状態から始めます。ダブルについては未定義です。適当に定めます。(ぉぃ
まっすぐ画面に向かって平行に立っている状態(例えば1P側で←→のパネルをそれぞれ左右の足で踏んでいる状態など)における体向が0°、そこから左回転したら正の方向の回転、右回転は負の方向の回転とします。全てのオブジェクトについて体向を定めたら、その差分をとることで各オブジェクトに対応する回転角度を求めることができます。


図1

↑図1が、たとえばダブルで左側のような譜面が存在し、さらに左足、右足どちらで踏むかを定めていた(「L」が左足、「R」が右足とする)場合の体向を調べ、そこから回転角度を求めたものです。
最初→←の同時踏みは、それぞれ左足、右足で踏みます。この時は画面に対して平行に立っているので、体向は0°です。その次の2P側の↓を左足で踏むとした場合、一瞬後ろを向くような形で体向は135°となります。次の2P側→は右足で踏むので、体向は45°となります。これがそれぞれのオブジェクトに対応する体向です。
回転角度はその差分を取るので、図では吹き出しで表された数値になります。最初は左回転なので正ですが、次の回転は右回転なので負の方向に90°回転したことになります。

このように「体向」と「回転角度」を定めることで、前回のアラビアータ、MAX 300のダブルの激譜面について数値化したというわけです。
↓図2は、アラビアータの譜面の一部について、各オブジェクトについて体向と回転角度を求めたものです。


図2

これは大雑把なアルゴリズムの説明にしかなっていないので、このやり方を適用すれば全ダブル譜面に対して体向と回転角度が一意に定まる!というわけではないです。そもそも、パネルをどちらの足で踏むかはあらかじめ定められているとしています。これがいい加減なものなら、回転角度など全く目安にもならない値がでてきてしまうでしょう。
ただ、このやり方に従って適宜うまく作成してやれば、目安となる程度のものはできると思います。それがこないだのMAX300とアラビアータの例ではある程度は客観的な、特に異論なく認めてもらえる数値として言えると思います。

*1:ただ、あくまでもプレイヤーを抽象的にモデル化したものです。「実際のプレイヤーがプレイしている時の体の角度」といってもそれはどこの角度なのかわかりませんし。

*2:左右どちらの足で踏むかが不自然な定め方をしていた場合には定められない場合がある