deal with 0 duration projectile interval

This commit is contained in:
greytower 2007-04-17 01:17:27 +00:00
parent 8d662e51f7
commit 4f51f073a0

View File

@ -111,10 +111,12 @@ class ProjectileInterval(Interval):
def calcStartVel(startPos, endPos, duration, zAccel): def calcStartVel(startPos, endPos, duration, zAccel):
# p(t) = p_0 + t*v_0 + .5*a*t^2 # p(t) = p_0 + t*v_0 + .5*a*t^2
# v_0 = [p(t) - p_0 - .5*a*t^2] / t # v_0 = [p(t) - p_0 - .5*a*t^2] / t
t = duration if (duration == 0):
return Point3((endPos[0] - startPos[0]) / duration, return Point3(0, 0, 0)
else:
return Point3((endPos[0] - startPos[0]) / duration,
(endPos[1] - startPos[1]) / duration, (endPos[1] - startPos[1]) / duration,
(endPos[2] - startPos[2] - (.5*zAccel*t*t)) / t) (endPos[2] - startPos[2] - (.5*zAccel*duration*duration)) / duration)
def calcTimeOfImpactOnPlane(startHeight, endHeight, startVel, accel): def calcTimeOfImpactOnPlane(startHeight, endHeight, startVel, accel):
return PythonUtil.solveQuadratic(accel * .5, startVel, return PythonUtil.solveQuadratic(accel * .5, startVel,