ホーム < ゲームつくろー!< 衝突判定編 衝突判定編 ゲームで絶対に必要になるのが「衝突判定」です。ぶつかる物があって、初めて世界が生まれます。ここでは、衝突(Collision)にトコトンこだわってみました。 (本当は自分の学習のためでもあります(^-^;)
S ≡ (Px - Cx) * (Qy - Cy) - (Py - Cy) * (Qx - Cx) とする.S>0 なら左回り,S<0 なら右回り,S=0 ならば C,P,Q は一直線上にある.(注) なお,この判別方法は,CP と CQ が同じ長さである必要はない. θを求めたい場合はこちらへ. この問題を見て,逆三角関数 tan-1 (C言語では atan() や atan2()) を使って CP と CQ の角度をそれぞれ求め, 両者を比較しようと考えた方が多いのではないでしょうか. しかしこの問題では,角度そのものではなく角度差の符号を求めればよいので, 逆三角関数を使う方法よりも簡単で優れた,外積を使う方法を紹介します. 2つの2次元ベクトル A=(Ax, Ay), B=(Bx, By) の外積を次のように定義する. A × B ≡ Ax * By - Ay * Bx ここで O
昔,モデルビューアのまねごとみたいなソフトを作ったときについでにつくった のを思い出してつくってみた. アルゴリズムは,以下の流れ. 1.もっとも原点から遠い頂点を探す. 2.その頂点の両隣の頂点からなる三角形の外積ベクトルの方向を保存する. 3.その頂点と,その両隣の頂点からなる三角形の内部に他の頂点があるかを調べる. 4.もし内部に頂点がなければ,その頂点とその両隣の頂点からなる三角形を分割要素 として,その頂点を削除し,1に戻る. 5.頂点が内部にある場合は,隣の頂点に移動する 6.移動先の頂点と,その両隣の頂点からなる三角形の外積ベクトルの方向を計算し, 2.で求めた外積ベクトルと同じ方向かをチェック. 7.もし同じ方向であれば,その頂点と,その両隣の頂点からなる三角形の内部に他 の頂点があるかを調べる.内部になければ,その頂点とその両隣の頂点からなる 三角形
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く