Ver Fonte

deal with 0 duration projectile interval

greytower há 18 anos atrás
pai
commit
4f51f073a0
1 ficheiros alterados com 5 adições e 3 exclusões
  1. 5 3
      direct/src/interval/ProjectileInterval.py

+ 5 - 3
direct/src/interval/ProjectileInterval.py

@@ -111,10 +111,12 @@ class ProjectileInterval(Interval):
         def calcStartVel(startPos, endPos, duration, zAccel):
             # p(t) = p_0 + t*v_0 + .5*a*t^2
             # v_0 = [p(t) - p_0 - .5*a*t^2] / t
-            t = duration
-            return Point3((endPos[0] - startPos[0]) / duration,
+            if (duration == 0):
+                return Point3(0, 0, 0)
+            else:
+                return Point3((endPos[0] - startPos[0]) / 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):
             return PythonUtil.solveQuadratic(accel * .5, startVel,