我有以下相关代码,用于模拟箱子内壁球的轨迹:
while t<20:
if ball.pos.x>wallR.pos.x-ball.radius:
ball.momentum.x=-1*ball.momentum.x
varr.axis.x=-varr.axis.x
if ball.pos.x<wallL.pos.x+ball.radius:
ball.momentum.x=-1*ball.momentum.x
varr.axis.x=-varr.axis.x
if ball.pos.y>wallT.pos.y-ball.radius:
ball.momentum.y=-1*ball.momentum.y
varr.axis.y=-varr.axis.y
if ball.pos.y<wallBt.pos.y+ball.radius:
ball.momentum.y=-1*ball.momentum.y
varr.axis.y=-varr.axis.y
if ball.pos.z<wallB.pos.z+ball.radius:
ball.momentum.z=-1*ball.momentum.z
varr.axis.z=-varr.axis.z
if ball.pos.z>wallF.pos.z-ball.radius:
ball.momentum.z=-1*ball.momentum.z
varr.axis.z=-varr.axis.z
ball.momentum = ball.momentum + g*mass*dt
ball.pos = ball.pos + ((ball.momentum)/mass)*dt
ball.trail.append(pos=ball.pos)
varr.pos = varr.pos + ((ball.momentum)/mass)*dt
varr.axis = vscale*ball.momentum
t=t+dt
varr
就是附着在球上的动量向量
我想知道我需要做些什么来实现代码中的恢复系数,以便反弹看起来更真实一些。我不知道在while循环中在哪里实现它。我的物理老师基本上说,“把这个加入你的代码中,”我有点迷路了
编辑:我了解到,要实现恢复系数,我需要在动量从墙上反弹时按绝对值小于1的因子缩放动量,但我还需要在位置更新函数中缩放动量。有人愿意解释我为什么要这么做吗
目前没有回答
相关问题 更多 >
编程相关推荐