diff python/moving.py @ 542:a3add9f751ef

added differentiate function for curvilinear trajectories and modified the addPosition functions
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 07 Jul 2014 16:54:10 -0400
parents f012a8ad7a0e
children cb213269d330
line wrap: on
line diff
--- a/python/moving.py	Mon Jul 07 12:30:46 2014 -0400
+++ b/python/moving.py	Mon Jul 07 16:54:10 2014 -0400
@@ -541,10 +541,12 @@
             return Trajectory([[a-b for a,b in zip(self.getXCoordinates(),traj2.getXCoordinates())],
                                [a-b for a,b in zip(self.getYCoordinates(),traj2.getYCoordinates())]])
 
-    def differentiate(self):
+    def differentiate(self, doubleLastPosition = False):
         diff = Trajectory()
         for i in xrange(1, self.length()):
             diff.addPosition(self[i]-self[i-1])
+        if doubleLastPosition:
+            diff.addPosition(diff[-1])
         return diff
 
     def norm(self):
@@ -654,15 +656,30 @@
     def getLanes(self):
         return self.lanes
 
-    def addPosition(self, s, y, lane):
+    def addPositionSYL(self, s, y, lane):
         self.addPositionXY(s,y)
         self.lanes.append(lane)
 
+    def addPosition(self, p):
+        'Adds position in the point format for curvilinear of list with 3 values'
+        self.addPositionSYL(p[0], p[1], p[2])
+
     def setPosition(self, i, s, y, lane):
         self.setPositionXY(i, s, y)
         if i < self.__len__():
             self.lanes[i] = lane
 
+    def differentiate(self, doubleLastPosition = False):
+        diff = CurvilinearTrajectory()
+        p1 = self[0]
+        for i in xrange(1, self.length()):
+            p2 = self[i]
+            diff.addPositionSYL(p2[0]-p1[0], p2[1]-p1[1], p1[2])
+            p1=p2
+        if doubleLastPosition:
+            diff.addPosition(diff[-1])
+        return diff
+
     def getIntersections(self, S1, lane = None):
         '''Returns a list of the indices at which the trajectory 
         goes past the curvilinear coordinate S1