comparison 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
comparison
equal deleted inserted replaced
541:048b43654870 542:a3add9f751ef
539 return None 539 return None
540 else: 540 else:
541 return Trajectory([[a-b for a,b in zip(self.getXCoordinates(),traj2.getXCoordinates())], 541 return Trajectory([[a-b for a,b in zip(self.getXCoordinates(),traj2.getXCoordinates())],
542 [a-b for a,b in zip(self.getYCoordinates(),traj2.getYCoordinates())]]) 542 [a-b for a,b in zip(self.getYCoordinates(),traj2.getYCoordinates())]])
543 543
544 def differentiate(self): 544 def differentiate(self, doubleLastPosition = False):
545 diff = Trajectory() 545 diff = Trajectory()
546 for i in xrange(1, self.length()): 546 for i in xrange(1, self.length()):
547 diff.addPosition(self[i]-self[i-1]) 547 diff.addPosition(self[i]-self[i-1])
548 if doubleLastPosition:
549 diff.addPosition(diff[-1])
548 return diff 550 return diff
549 551
550 def norm(self): 552 def norm(self):
551 '''Returns the list of the norms at each instant''' 553 '''Returns the list of the norms at each instant'''
552 # def add(x, y): return x+y 554 # def add(x, y): return x+y
652 return self.getXCoordinates() 654 return self.getXCoordinates()
653 655
654 def getLanes(self): 656 def getLanes(self):
655 return self.lanes 657 return self.lanes
656 658
657 def addPosition(self, s, y, lane): 659 def addPositionSYL(self, s, y, lane):
658 self.addPositionXY(s,y) 660 self.addPositionXY(s,y)
659 self.lanes.append(lane) 661 self.lanes.append(lane)
662
663 def addPosition(self, p):
664 'Adds position in the point format for curvilinear of list with 3 values'
665 self.addPositionSYL(p[0], p[1], p[2])
660 666
661 def setPosition(self, i, s, y, lane): 667 def setPosition(self, i, s, y, lane):
662 self.setPositionXY(i, s, y) 668 self.setPositionXY(i, s, y)
663 if i < self.__len__(): 669 if i < self.__len__():
664 self.lanes[i] = lane 670 self.lanes[i] = lane
671
672 def differentiate(self, doubleLastPosition = False):
673 diff = CurvilinearTrajectory()
674 p1 = self[0]
675 for i in xrange(1, self.length()):
676 p2 = self[i]
677 diff.addPositionSYL(p2[0]-p1[0], p2[1]-p1[1], p1[2])
678 p1=p2
679 if doubleLastPosition:
680 diff.addPosition(diff[-1])
681 return diff
665 682
666 def getIntersections(self, S1, lane = None): 683 def getIntersections(self, S1, lane = None):
667 '''Returns a list of the indices at which the trajectory 684 '''Returns a list of the indices at which the trajectory
668 goes past the curvilinear coordinate S1 685 goes past the curvilinear coordinate S1
669 (in provided lane if lane != None) 686 (in provided lane if lane != None)