Mercurial Hosting > traffic-intelligence
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) |