我正在创建一个程序来找到以给定速度发射射弹的最佳角度,以便在给定距离之外击中目标。
我有这段代码:
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)
。如何在每次迭代此函数时使函数生成新曲线?
(在此代码段之外定义了变量,程序在概念上运行正常,图表看起来如何)
答案 0 :(得分: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
来创建新对象。