0

しばらく検索した後、質問を修正しました。

ボール同士の衝突の例を数多く見つけましたが、Vector2d または Vector2D を使用して機能しているように見える唯一のものです。

これは問題です。通常の Java ライブラリの使用しか許可されていないため、主な質問は次のとおりです。サンプル (以下に投稿します) を変換して、使用できるものを使用するにはどうすればよいですか?

いくつかの変数があります。両方のボールの質量は同じで、速度は異なる変数 x と y に分割されます。また、それらの x および y 位置にもアクセスできます。

これが私のアプリケーションに残された唯一の問題です。

以下の例を変換する方法について、私は完全に途方に暮れています。

// get the mtd
Vector2d delta = (position.subtract(ball.position));
float d = delta.getLength();
// minimum translation distance to push balls apart after intersecting
Vector2d mtd = delta.multiply(((getRadius() + ball.getRadius())-d)/d); 


// resolve intersection --
// inverse mass quantities
float im1 = 1 / getMass(); 
float im2 = 1 / ball.getMass();

// push-pull them apart based off their mass
position = position.add(mtd.multiply(im1 / (im1 + im2)));
ball.position = ball.position.subtract(mtd.multiply(im2 / (im1 + im2)));

// impact speed
Vector2d v = (this.velocity.subtract(ball.velocity));
float vn = v.dot(mtd.normalize());

// sphere intersecting but moving away from each other already
if (vn > 0.0f) return;

// collision impulse
float i = (-(1.0f + Constants.restitution) * vn) / (im1 + im2);
Vector2d impulse = mtd.multiply(i);

// change in momentum
this.velocity = this.velocity.add(impulse.multiply(im1));
ball.velocity = ball.velocity.subtract(impulse.multiply(im2));

質問の URL は次のとおりです。

http://stackoverflow.com/questions/345838/ball-to-ball-collision-detection-and-handling

そして私は彼のソースコードを見てみました。

この号をお読みいただきありがとうございます。

成功!

Vector2d の使い方を見つけました。完璧に動作します。後で答えを編集します!

4

1 に答える 1