# HG changeset patch # User Nicolas Saunier # Date 1411069017 14400 # Node ID 7e1ae4d97f1a0d94a4f7099923d20007fc03fa8f # Parent 10e8a9f2bd9f0831065bc78763bc7b2d50202b1f corrected bug for curvilinear trajectory with only one position and differentiation diff -r 10e8a9f2bd9f -r 7e1ae4d97f1a python/moving.py --- a/python/moving.py Wed Sep 17 17:29:19 2014 -0400 +++ b/python/moving.py Thu Sep 18 15:36:57 2014 -0400 @@ -614,6 +614,9 @@ def length(self): return self.__len__() + def empty(self): + return self.__len__() == 0 + def __getitem__(self, i): if isinstance(i, int): return Point(self.positions[0][i], self.positions[1][i]) @@ -884,7 +887,7 @@ p2 = self[i] diff.addPositionSYL(p2[0]-p1[0], p2[1]-p1[1], p1[2]) p1=p2 - if doubleLastPosition: + if doubleLastPosition and self.length() > 1: diff.addPosition(diff[-1]) return diff diff -r 10e8a9f2bd9f -r 7e1ae4d97f1a python/tests/moving.txt --- a/python/tests/moving.txt Wed Sep 17 17:29:19 2014 -0400 +++ b/python/tests/moving.txt Thu Sep 18 15:36:57 2014 -0400 @@ -144,6 +144,9 @@ [1.0, 0.0, '1'] [1.0, 0.099..., '1'] [2.0, 0.099..., '1'] >>> t.differentiate(True) # doctest:+ELLIPSIS [1.0, 0.0, '1'] [1.0, 0.099..., '1'] [2.0, 0.099..., '1'] [2.0, 0.099..., '1'] +>>> t = CurvilinearTrajectory(S = [1.], Y = [0.5], lanes = ['1']) +>>> t.differentiate().empty() +True >>> o1 = MovingObject(positions = Trajectory([[0]*3,[2]*3]), velocities = Trajectory([[0]*3,[1]*3])) >>> o1.classifyUserTypeSpeedMotorized(0.5, np.median)