经过一段时间的搜索,我修改了我的问题。
我找到了很多球对球碰撞的例子,但是唯一可以使用Vector2d或Vector2D的例子。
这是一个问题,因为我只允许使用常规java库,所以我的主要问题是:如何转换示例(我将在下面发布)以使用我可以使用的内容?
我有几个变量,两个球具有相同的质量,速度被分成不同的变量,x和y。我也可以访问他们的x和y pos。
这是我的申请中唯一的问题。
我完全失去了如何转换下面的例子。
// 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
我已经看了他的源代码。
感谢您抽出宝贵时间阅读此问题。
SUCCESS!
我已经找到了如何使用Vector2d,它完美地工作! 稍后会回答编辑!
答案 0 :(得分:0)
我正在c#中实现我自己的3d引擎,它基于一个名为a3的JavaScript中非常基本的3d开源引擎。我不知道如果我100%了解你,但听起来你只能找到Vector2d的例子,但你不能使用那个类?
我就是这样,你可以想象javascript没有原生的Vector2d类型,所以有人必须实现。不要害怕试一试,只是几个高中数学函数,你应该能够在几分钟内实现自己的Vector2d类
以下链接包含javascript中的vector2d,vector3d,vector4d,matrix3和matrix4的实现:https://github.com/paullewis/a3/tree/master/src/js/core/math希望它有所帮助:)