我正在尝试编写一个简单的物理模拟器。但是我面临球弹跳的问题。即使我的RESTITUTION设置为1,每次接触地面时球都会反弹一点。
Restitution变量:
public static double RESTITUTION=1d;
处理退回的代码:
if(Y<c.getRadius()){
VY=Math.abs(VY)*Utils.RESTITUTION;
Y=c.getRadius();
c.getCenter().setY(Y);
c.getV().setY(VY);
}
所有变量都使用double作为数据类型。 Y是球的中心。 VY是速度的Y分量。
答案 0 :(得分:1)
如果Y < c.getRadius()
球已经c.getRadius() - Y
已经进入地面,则会在备份的路上添加。
我认为你应该保留Y并且只是反转速度等等。
如果您以某个角度反弹,您可能会计算出准确的影响点并按此更正。