Mercurial > hg > nsaunier > traffic-intelligence
comparison python/moving.py @ 26:54d9cb0c902b
generalized intervals
| author | Nicolas Saunier <nico@confins.net> |
|---|---|
| date | Sat, 05 Dec 2009 12:31:28 -0500 |
| parents | 28e546861263 |
| children | 44689029a86f |
comparison
equal
deleted
inserted
replaced
| 25:28e546861263 | 26:54d9cb0c902b |
|---|---|
| 9 | 9 |
| 10 __metaclass__ = type | 10 __metaclass__ = type |
| 11 | 11 |
| 12 #class MovingObject: | 12 #class MovingObject: |
| 13 | 13 |
| 14 class TimeInterval: | 14 class Interval: |
| 15 '''Temporal interval''' | 15 '''Generic Interval''' |
| 16 def __init__(self, first=0, last=-1): | 16 def __init__(self, first=0, last=-1, revert = False): |
| 17 self.first=first | 17 'Warning, do not revert if last<first, it contradicts the definition of empty' |
| 18 self.last=last | 18 if revert and last<first: |
| 19 self.first=last | |
| 20 self.last=first | |
| 21 else: | |
| 22 self.first=first | |
| 23 self.last=last | |
| 19 | 24 |
| 20 def __str__(self): | 25 def __str__(self): |
| 21 return '%d %d'%(self.first, self.last) | 26 return '%d %d'%(self.first, self.last) |
| 22 | 27 |
| 23 def __iter__(self): | 28 def __iter__(self): |
| 31 self.iterInstantNum += 1 | 36 self.iterInstantNum += 1 |
| 32 return self.first+self.iterInstantNum | 37 return self.first+self.iterInstantNum |
| 33 | 38 |
| 34 def empty(self): | 39 def empty(self): |
| 35 ''' | 40 ''' |
| 36 >>> TimeInterval().empty() | 41 >>> Interval().empty() |
| 37 True | 42 True |
| 38 >>> TimeInterval(0,1).empty() | 43 >>> Interval(0,1).empty() |
| 39 False | 44 False |
| 40 ''' | 45 ''' |
| 41 return self.first > self.last | 46 return self.first > self.last |
| 42 | 47 |
| 43 def length(self): | 48 def length(self): |
| 44 '''Returns the length of the interval | 49 '''Returns the length of the interval |
| 45 | 50 |
| 46 >>> TimeInterval(0,1).length() | 51 >>> Interval(0,1).length() |
| 47 2 | 52 1 |
| 48 >>> TimeInterval(10,8).length() | 53 >>> Interval(23.2,24.9).length() |
| 54 1.6999999999999993 | |
| 55 >>> Interval(10,8).length() | |
| 49 0 | 56 0 |
| 50 ''' | 57 ''' |
| 51 return max(0,self.last-self.first+1) | 58 return max(0,self.last-self.first) |
| 52 | 59 |
| 53 def getList(self): | 60 def getList(self): |
| 54 return [self.first, self.last] | 61 return [self.first, self.last] |
| 55 | 62 |
| 56 def contains(self, instant): | 63 def contains(self, instant): |
| 66 | 73 |
| 67 def intersection(self, interval2): | 74 def intersection(self, interval2): |
| 68 '''Largest interval comprising self and interval2''' | 75 '''Largest interval comprising self and interval2''' |
| 69 return TimeInterval(max(self.first, interval2.first), min(self.last, interval2.last)) | 76 return TimeInterval(max(self.first, interval2.first), min(self.last, interval2.last)) |
| 70 | 77 |
| 78 def TimeInterval(Interval): | |
| 79 '''Temporal interval''' | |
| 80 | |
| 81 def __init__(self, first=0, last=-1): | |
| 82 Interval.__init__(self, first, last, False) | |
| 83 | |
| 84 def length(self): | |
| 85 '''Returns the length of the interval | |
| 86 | |
| 87 >>> TimeInterval(0,1).length() | |
| 88 2 | |
| 89 >>> TimeInterval(10,8).length() | |
| 90 0 | |
| 91 ''' | |
| 92 return max(0,self.last-self.first+1) | |
| 71 | 93 |
| 72 # class BoundingPolygon: | 94 # class BoundingPolygon: |
| 73 # '''Class for a polygon bounding a set of points | 95 # '''Class for a polygon bounding a set of points |
| 74 # with methods to create intersection, unions... | 96 # with methods to create intersection, unions... |
| 75 # ''' | 97 # ''' |
