VPython:每次运行迭代函数以创建新曲线
我正在创建一个程序,目的是找出以给定速度发射一个物体时,最佳的发射角度,以便能够击中一个特定距离的目标。
我有这样的代码:
def Trajectory(angle):
position = vector(0,0,0)
poscurve.plot(pos=position)
velocity = v0 * vector(cos(angle*pi/180), sin(angle*pi/180), 0)
while (position.y > 0) or (velocity.y > 0):
dx = velocity * dt # update dx and dv
dv = g * dt
position = position + dx # apply the updates to velocity and position
velocity = velocity + dv
poscurve.plot(pos=position)
return position
问题是,这个程序会多次重复这个功能,每次使用不同的角度。当它重复时,它会把新曲线的第一个点连接到上一个曲线的最后一个点,因为这个函数每次都用相同的 poscurve.plot(pos=position)
。我该如何让这个函数在每次迭代时生成一条新的曲线呢?
(在这个代码片段之外还有一些变量已经定义,程序的概念上是正常工作的,只是图形的显示效果不太好)
1 个回答
0
把 poscurve
加入到参数里:
def Trajectory(angle,poscurve):
position = vector(0,0,0)
poscurve.plot(pos=position)
velocity = v0 * vector(cos(angle*pi/180), sin(angle*pi/180), 0)
while (position.y > 0) or (velocity.y > 0):
dx = velocity * dt # update dx and dv
dv = g * dt
position = position + dx # apply the updates to velocity and position
velocity = velocity + dv
poscurve.plot(pos=position)
return position
然后,每次都传入一个新的 poscurve
。你可以再次调用 gcurve
来创建一个新的对象。