1

我正在创建一个程序来找到以给定速度发射弹丸的最佳角度,以便击中给定距离之外的目标。

我有这个代码:

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)每次都使用相同的。如何使函数在每次迭代此函数时生成一条新曲线?

(在此代码段之外定义了一些变量,程序在概念上工作正常,只是图表的外观)

4

1 回答 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再次调用来创建一个新对象。

于 2013-09-05T17:05:03.087 回答