3

了解しました。この衝突検出コードがあり、壁の平面を横切って残りの距離(0から+5に移動、壁は+2、残り= +3)をプッシュしようとしています。このような: ここに画像の説明を入力してください

今、私はそれのほとんどを手に入れました、私は私が動きからの残りの距離と壁のための法線の外積を必要とすることを知っています、しかし私はフォーラムを正しくするためにいくらかの助けが必要です。

私の質問は、壁の平面に沿って残りの距離を移動するための正しいフォーラムは何ですか?

if(distRemaining.length() > 0){
            cProduct = cross(distRemaining, wallNormal);
            dest += new Vector3f(cProduct.x, 0, cProduct.z);
        }
4

1 に答える 1

2

A始点、衝撃点、および壁平面へBの法線ベクトルを呼び出します。NAからB(AB)を取るベクトルを計算し、それとの間のベクトル積を計算しNます。これをXと呼ぶ

    X = AB x N

Nこれは両方に垂直なベクトルABであり、壁の平面にもあります。Xとの間のベクトル積としてさらにベクトルYを取るN

    Y = X x N

これは、衝突後の壁に沿ったパーティクルの動きの方向を指す、壁内の別のベクトルになります。このベクトルを正規化しY(計算Y / |Y|)、壁に沿って移動する量を掛けてから、衝突点に追加する必要がありますB。このベクトルが反対方向を指す可能性がありますが、ベクトル積を取る順序に注意すれば問題ないはずです。

これはあなたがあなたの質問からあなたが望むと私が仮定している3Dでそれをすることができる方法です。2Dでは、かなり簡単になります。

于 2012-06-25T22:58:33.563 に答える