2013-05-12

"ゲーム開発のための数学・物理学入門" Wendy Stahler 著

ゲームプログラムを開発するわけではないが、こういう本を眺めているとノスタルジーな気分にさせてくれる。20年ぐらい前になろうか、コマンドラインのOSに勢いがあった時代、ブラウン運動やインクジェットの噴射といった統計的現象を視覚化する時、スクリーンライブラリを駆使したものである。グラフィックライブラリもあるにはあったが、一般化には程遠かった。スクリーン座標系とデカルト座標系が違うのは仕方がない。だが、いまだデカルト座標系には業界標準がないらしい。OpenGL と Direct3D で右手座標系と左手座標系で違うのも気になってしょうがない。確かに、万能な座標系を想定することは難しいだろう。空間座標を固定しない方が、想像空間も拡がるだろうし。そして、相対的な認識能力しか発揮できない知的生命体は、自ら編み出した多種多様な空間変換系によって精神空間までも歪めるのだろうか?

さて、ここに登場する数学と物理学の知識は、極めて基本的なものばかりだが、疎かにはできない。ピタゴラスの定理や三角関数、あるいはベクトルで物体の軌道や投射物の運動を記述し、ニュートンの運動法則と運動量保存則で衝突をモデル化し、行列を用いて2次元空間から3次元空間へ拡張する。
また、運動の要素を観察すると、直線運動と回転運動に分解できる。そこで、ニュートンの運動法則における角運動量、すなわちモーメントとしての解釈が鍵となる。
ゲームでは、物理現象をいかにリアリティに描写するかが問われる。衝突現象を一つとっても、弾性衝突(完全弾性衝突)と完全非弾性衝突の二つの極端な現象の間で、非弾性衝突を記述するわけだが、そこで、はねかえり係数や摩擦係数を用いて按配を計算することになる。

ところで、ニュートン力学の中心的な概念に「力」ってやつがある。なんと曖昧な用語であろう。学生時代、エネルギーと何が違うのか?と悩んだものである。ガリレオは、著書「天文対話」で慣性の法則らしきものを語っているが、質量については、おぼろげな認識しかなかったようである。アリストテレスの運動論以来、インペトゥス、モーメント、トルク、エネルギー、フォースなどと用語が乱立するのも、質量問題は哲学の存在問題との境界をさまよってきた歴史がある。アインシュタインは、あの有名な公式で質量とエネルギーの等価性を示した。おかげで、ニュートンの運動方程式から力をエネルギーに換算することができる。
また、力と同様、曖昧な語に「仕事」ってやつがある。物体に加える力と、その変位との積によって定義される物理量である。仕事と力の関係から、運動エネルギーや位置エネルギーに分解されると、力学的エネルギーとの関係が記述できるようになる。
さらに、「運動量」「力積」という物理量が登場する。運動量は、質量と速度の積で定義され、絶えず変化する速度によって決まるので、物体の状態を示している。力積は、力と時間の積で定義され、運動量の変化量を示している。
本書は、瞬間運動量や、時間における運動量の変化を考察することに重要な意味があるとしている。運動の軌道を具体的に記述するには、エネルギーを運動量として眺める必要があろう。エネルギー保存則は、力と仕事を通じて運動量保存則に置き換えられるという見方もできそうである。人間認識とは、なんらかの運動に対して生じるものであり、ニュートン力学と運動量の法則があれば、大方記述できるというわけか。ゲームの中にニュートンとデカルトの融合があったとは...
人は、ある現象を説明する時、本能的に力関係を感じたり、努力を仕事量で計ったりするところがある。政治の力、金の力、愛の力などと言えば幻想にしか思えんが、人間認識ってやつはデカルト式実存論がお好きなようだ。尚、ニュートンとデカルトで霊感まで記述できるのかは知らん。

1. 変換系と三角法
「アフィンとは移動後もオブジェクトの基本的な形が保たれるという意味です。」
アフィン変換に関しては様々な記述を見かけるが、ここでは、平行移動、スケーリング、回転について言及される。この変換系には、力の合成や非均一なスケーリングも含まれる。
さて、最も単純な幾何学的軌道は直線である。デカルト座標系では、直線は始点と終点だけで記述できる。その性質には傾きが生じ、それだけで直角三角形と相性がいいことが分かる。そこに角の概念を持つ三角関数を用いれば、直線運動と回転運動の変換が容易になる。ニュートンの運動法則を回転運動として解釈するには、デカルト座標と極座標の変換が欠かせない。

2. 内積と外積
幾何学的な直角の概念は、重要な意味を持っている。線と点の関係では、垂線というだけで、そのスカラー値が距離を示す。さらに、ベクトル空間を用いれば、代数学的な直交性の概念に抽象化され、内積や外積が導入できる。
内積は、ゼロの時は垂直、負の時は直角より大きい、正の時は直角より小さい。この性質は、物体が視野内にあるかどうかの判定に使えたり、正規化すれば投影物の運動も記述できる。つまり、内積は2つのベクトルの関係を示しており、物理現象の観察において重要な道具となる。また、行列演算では、直交性によって演算を簡略化でき、幸せになれることを付け加えておこう。
一方、外積は2つのベクトルに対して、垂直な3つ目のベクトルを生成する。内積の結果がスカラー値になるのに対して、外積の結果はベクトルになる。そのために、外積を使って面法線を計算することができる。曲面に対しては放射ベクトルを生成することもできるわけだ。そして、内積では交換法則が成り立つが、外積では交換法則が成り立たない。

3. 衝突の検知と物体の境界
自動車をモデル化する時、車輪、車体の中央部、前部、後部というように円で分割する。そして、自動車全体を円で囲むことで、その中心点を位置情報とする。こうして複合円の階層構造によって物体を構成する例を紹介してくれる。衝突の検知では円周を境界とし、そのダメージを円の交差点としてモデル化すれば、円の方程式が物体の境界条件にできるという寸法よ。

0 コメント:

コメントを投稿