2011-03-07 20 views
3

地形の衝突の例はC++で探していますが、何も見つかりませんでした。私はtoymaker.infoにある.RAWファイルを使用する1つの例を見つけましたので、言及しません。
どのようにオブジェクトの缶の間の衝突をすべての三角形に対して検出しますか?私はそれが遅くなることを知っている。あなたは地形と.Xファイルの衝突をどのように検出しますか?地形の.Xファイルとの衝突

あなたがの衝突をテストしたい球の中心を原点から線を引く:ここ

答えて

2

は一つの方法です。今作成した線、または線を使って、線の三角形の交差点を作成します。あなたは今、光線が三角形を通過したかどうかを知っています。三角形を通過した場合は、三角形と交差する点を取得し、球の中心との単純な距離チェックを行います。距離が球の半径よりも大きい場合、衝突は発生していない。それ以下であれば、球は三角形と交差しています。

また、三角形のどの辺が球の中心にあるかチェックする価値があります。これは、三角形の法線と球の中心との間の単純な点積です。 0の値は球の中心が三角形内にあることを示し、正の結果はその一方の側を示し、他方は負であることを示します。

この計算は、ある範囲の時間に実行することもできます。だから、あなたが秒をシミュレートしているのを知っていて球が動いている速度を知っているなら、その球が三角を横切った点を計算することができます。これは計算が非常に簡単です。開始時に球が三角形から4単位であり、1秒後に三角形を通して1単位です。それで1秒で5単位走行しました。したがって、交差点は0.8秒間移動したに違いありません。この方法で、パーティクルの衝突に反応することができます。たとえそうでなければ、衝突しているアイテムをまっすぐに通過することになります。