changeset 1114:7135b5eaa6b4

correcting poor requirement for interpolateCurvilinearPositions (when changing alignment)
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 21 Jun 2019 15:54:04 -0400
parents 19581a4caf90
children cef7aa2f9931
files trafficintelligence/moving.py trafficintelligence/tests/moving.txt
diffstat 2 files changed, 13 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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:
--- 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()