VPython:迭代一个函数,在每次运行时创建一条新曲线

时间:2013-02-05 16:52:29

标签: python 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 :(得分: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来创建新对象。