上の図で底辺がそうなっているのはこの計算からきています。上の三角形は「直角三角形」です。いうのことは、一方を標準化した内積の値というのは「標準化ベクトルv2を含む直線にベクトルv1を真っ直ぐ下ろした(正射影した)時の長さ」であることがわかります。これが、ものすご〜〜〜〜く大切なんです。気をつけることが1つ。cosθはθが鈍角(90度〜180度)だとマイナスになります。よって、正射影した長さには符号が付きます。先ほどv2は標準化されているとしました。ベクトルの節でお話した事を思い出して欲しいのですが、ベクトルには掛け算が定義されていました。ベクトルに定数を掛けると、ベクトルの大きさを伸ばしてくれます。v2のベクトルの大きさは1。今Dotの大きさが底辺の長さである事もわかりました。v2というのは、「v2の方向で大きさがdotのベクトル」であるわけです:これがゲームにおける内積のイメージと言っても過言ではありません。事実、上の図式は衝突判定のあらゆる所で同じような形で出てきます。ちなみに、これは3D座標でもまったく同じ性質を持っています。あるベクトルを標準化したベクトルに真っ直ぐ落とした時の長さがDot。それに先に標準化してあるベクトルをさらに掛け算するとその方向が出る。内積のイメージを固めて下さい。内積のもう1つの使い方。それは「ベクトルがなす角度が鈍角か鋭角かを見る」です。先ほどの式に含まれるcosθは鈍角だとマイナスになります。内積の結果の符号を見れば、2つのベクトルの成す角度の鈍角・鋭角がわかります。これはポリゴン内に点が含まれているかどうか、ポリゴンに飛ばした光がポリゴンに当たるか否かなど、多くの場面で使います。内積は高校でもやります。外積は高校の学習指導要領には記載されていません。大学でもそれを使う学部に入るか線形代数を選択で取らないとたぶん出て来ません。内積に比べて外積は触れるチャンスがかなり少ない物なんです。これがすこぶる便利なんです。v3実は、内積と違い外積はベクトルの次元によって結果の次元までもが変わってしまう性質を持っています。理由を知りたい方はこの辺をどうぞ。上は2次元のベクトルの場合で、結果は定数。下は3次元ベクトルの外積の計算で、結果は同様に3次元のベクトルになります。内積の時と同様に、ゲーム屋は上の式を「成分同士の云々は計算方法、右辺は意味だ」と捉えます。...2Dの方は何だかよく分かりますが、3Dの方は謎ですね。実は、3Dの外積の結果は「2つのベクトルに垂直な方向を向いた大きさが|v1||v2|sinθのベクトル」になります。超大事な外積の性質です!2Dの方のイメージは内積のそれとそっくりです。cosθがsinθになっただけ。図にするとこういう感じです:外積は高さになるわけです。2Dゲームで地面からキャラクタがジャンプした時、その高さは外積で一発というわけです。v2という進行方向に対してv1が左にあるのか右にあるのかも、外積の符号結果をみればわかってしまいます。3Dの外積のイメージは次の通りです:3次元の空間に2つのベクトルv1、v2(標準化)があると見て下さい。そのなす角度はθとします。この時外積を取るとv3という大きさが|v1|sinθのベクトルが出現します。このベクトルv3は図にありますようにv1にもv2にも垂直なただ1つのベクトルになります。この三つ巴の直角状態。v1とv2のベクトルを含む平面はただ1つです。それに対してベクトルv3は鉛直になるのが分かると思います。平面に鉛直なベクトルの事を「法線ベクトル」と呼びます。このベクトルは衝突判定に置いて驚異的にあらゆる場所で出てきます。長さもまた極めて重要で、平面と点との距離を計算する時には外積だけでほぼ終わります。ところで、3Dの外積で「2つのベクトルに鉛直なベクトルがただ1つ決まる」と書きましたが、良く考えてみると、上のv3の反対ベクトルも2つのベクトルに垂直ですよね。これはいったいどちらの方向のベクトルが出てくるのでしょうか?実は、これは「左手系」と「右手系」で答えが分かれます。左手系というのは、左手の親指をX軸、人差し指をY軸、その両方に鉛直にした中指がZ軸とする直交座標系です。右手系の場合は右手の親指がX、人差し指が指Y、鉛直方向の中指がZ軸になります。上の図で親指はv1、人差し指はv2になります。左手系の場合、外積の結果は上の図のようにスクリーンの向こうかこちらに向かうベクトルになります。右手系で同じ指の当て方をすると、外積結果が真反対になるのが分かるはずです。よって、系によって答えが変わってしまいます。DirectXは左手系です。その一方でOpenGLは右手系です。2Dの外積は左右のチェックに使う2Dの外積の結果出てくる値はsin(θ)です。結果の符合を見れば、「×」の左側のベクトルに対して右側のベクトルが左にあるか右にあるかを判定するのに使えます。結果が0ならば2つのベクトルは平行であることもわかります。3Dの外積は三角ポリゴンの向きを計算する外積は三角ポリゴンの向きを調べることが出来ます。三角ポリゴンは3つの頂点を持つ平面です。頂点の1つを原点(始点)と考えると、他の2つの頂点までの軌跡はベクトルになります。その2つの軌跡はポリゴンにぺったりとくっついています。いわゆる「平面上の線」です。いうことは、その外積を計算すると、ポリゴンに直行する法線を得ることができます。演算順によって符号は変ってしまいますが、きちっとルールを設ければ、ポリゴンが3D空間でどの方向を向いているかを一意に定めることが出来ます。3Dの外積で最も多用される利用法の1つです。ベクトルと内積、外積の話をざっとしてきました。内積・外積のイメージが完全にでてきていないと、3Dのゲーム製作、特に衝突判定をするところでは意味不明と混乱が生じてしまいます。図を何度も見返して、イメージを脳に焼付けて下さい。それが楽しい(?)衝突判定に繋がります(^-^)。