经过一段时间的搜索,我修改了我的问题。
我发现了很多球对球碰撞的例子,但似乎唯一有效的例子是使用 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));
这是问题的网址:
http://stackoverflow.com/questions/345838/ball-to-ball-collision-detection-and-handling
我看过他的源代码。
感谢您花时间阅读此问题。
成功!
我已经找到了如何使用 Vector2d,而且效果很好!稍后将编辑答案!