diff --git a/scripts/hpp_wholebody_motion/utils/polyBezier.py b/scripts/hpp_wholebody_motion/utils/polyBezier.py index cde3113ea60b11d966e4e11749969cfc247ce869..8d1b20d80e7576418b02dcae897c5ccb021d7119 100644 --- a/scripts/hpp_wholebody_motion/utils/polyBezier.py +++ b/scripts/hpp_wholebody_motion/utils/polyBezier.py @@ -27,17 +27,19 @@ class PolyBezier: def findIntervalAdjustTime(self,t): id = self.findInterval(t) - t -= self.times[id] - return id,t + ta = t - self.times[id] + if ta >= self.curves[id].max(): #may happen due to numerical imprecision + ta = self.curves[id].max() + return id,ta def getBezierAt(self,t): id = self.findInterval(t) return self.curves[id] def __call__(self,t): - id = self.findInterval(t) - tc = t-self.times[id] - return self.curves[id](tc) + id,ta = self.findIntervalAdjustTime(t) + #print "t = "+str(t)+" in interval "+str(id)+" new t = "+str(tc)+" curve max = "+str(self.curves[id].max()) + return self.curves[id](ta) def numCurves(self): return len(self.curves)