# HG changeset patch # User Nicolas Saunier # Date 1561146844 14400 # Node ID 7135b5eaa6b44c0c3156304201728837c57b41d8 # Parent 19581a4caf90b7150cf3771c29c7b5be5b312734 correcting poor requirement for interpolateCurvilinearPositions (when changing alignment) diff -r 19581a4caf90 -r 7135b5eaa6b4 trafficintelligence/moving.py --- a/trafficintelligence/moving.py Thu Jun 20 10:39:21 2019 -0400 +++ b/trafficintelligence/moving.py Fri Jun 21 15:54:04 2019 -0400 @@ -1450,12 +1450,15 @@ i = int(floor(t)) p1 = self.getCurvilinearPositionAtInstant(i) p2 = self.getCurvilinearPositionAtInstant(i+1) - alpha = t-float(i) - if alpha < 0.5: - lane = p1[2] + if p1[2] == p2[2]: + alpha = t-float(i) + # if alpha < 0.5: + # lane = p1[2] + # else: + # lane = p2[2] + return [(1-alpha)*p1[0]+alpha*p2[0], (1-alpha)*p1[1]+alpha*p2[1], p1[2]] else: - lane = p2[2] - return [(1-alpha)*p1[0]+alpha*p2[0], (1-alpha)*p1[1]+alpha*p2[1], lane] + print('Object {} changes lane at {}'.format(self.getNum(), t)) else: print('Object {} does not exist at {}'.format(self.getNum(), t)) else: diff -r 19581a4caf90 -r 7135b5eaa6b4 trafficintelligence/tests/moving.txt --- a/trafficintelligence/tests/moving.txt Thu Jun 20 10:39:21 2019 -0400 +++ b/trafficintelligence/tests/moving.txt Fri Jun 21 15:54:04 2019 -0400 @@ -229,8 +229,11 @@ >>> o.curvilinearPositions = t1 >>> o.interpolateCurvilinearPositions(2.3) [4.3, 0.0, 'b'] ->>> o.interpolateCurvilinearPositions(10.7) # doctest:+ELLIPSIS -[14.09999..., 0.69999..., 'a'] +>>> o.interpolateCurvilinearPositions(9.7) # doctest:+ELLIPSIS +[11.7..., 0.0..., 'b'] +>>> o.interpolateCurvilinearPositions(10.7) +Object 0 changes lane at 10.7 +>>> t2 = CurvilinearTrajectory.generate(0, 1., 10, 'a', 1.) >>> t1 = CurvilinearTrajectory.generate(3, 1., 10, 'b') >>> t1.duplicateLastPosition()