~■はじめに球の交差判定ができるようになったら、次は3角形との交差判定です。3角形の交差判定ができれば、ポリゴンモデルでの交差判定ができるようになるので、世界が一気に広がります。今回のプログラムは、次のものです。DirectX9)まぁ、いつものように適当にファイルが入っています。出力されるフレームワークのファイルは紹介を省かせていただきます。ダイアログを管理するクラスのヘッダあと、実行ファイル、リソースファイル、プロジェクトファイルが入っています。■何やってるの?3角形とレイの交差判定ですが、2段階の手順を踏みます。第1段階では、レイと3角形の作る平面との交点を求めます。第2段階では、交点が3角形の中に入っているかどうかを調べます。0を連立して、求めます。p0は3角形の1点、nは3角形の法線ベクトルです。時は、レイと3角形の面に平行に進んでいるので、交わりません。t<0の時は、視線の後ろ側に交点があるので、やはり交わることがありません。次に、この交点が3角形の内部にあるかどうかの判定をします。この判定には、外積を使います。交点と3角形を結ぶベクトルd0と、3角形の1辺d1との外積を計算します。すると、外積によってできたベクトルは、3角形の法線と同じ方向か反対の方向を向きます。この向きは、交点が3角形の中にあるか外にあるかで符号が変わるので、全ての辺に関して、符号が同じならば、交点は3角形の中にあることになります。実際のプログラムでは、次のようになります。0.5))を返し、外れたらBG_COLORを返す関数です。3角形の頂点は決めうちにして、コードの中に埋め込みました。最初に頂点から法線ベクトルを計算します。法線ベクトルは、2つの辺の外積を正規化して求めます。データで持ってもいいでしょう。次に、レイがすすだ量のパラメータtを計算します。今回は、裏を向いているポリゴンとの交差判定はしないようにします。それは、レイと法線ベクトルの向きが反対の場合(vn<0)は、外れた事にするという処理で行います。vn<0.00001f)で判定します。この2つは、1つの式で一度に判定します。tが求まった後で、交点がレイの後ろにあるかどうかの判定をします。次に交点を求めて、交点が3角形の内部にあるか判定をします。最後に(ここまで来たら、レイは3角形とあたっているので)、あたったときの色を出力します。}■最後にさぁ、ポリゴンとの判定ができるようになりました。最初はこんなもんでしょう。もどるimagire@gmail.com。