Mercurial > hg > nsaunier > traffic-intelligence
comparison python/events.py @ 325:6c9c7c956926
added velocity angle in indicators
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Fri, 10 May 2013 21:32:11 +0200 |
| parents | a5e40bd04cf4 |
| children | f3aceea2afbb |
comparison
equal
deleted
inserted
replaced
| 324:99ca91a46007 | 325:6c9c7c956926 |
|---|---|
| 50 | 50 |
| 51 def computeIndicators(self): | 51 def computeIndicators(self): |
| 52 '''Computes the collision course cosine only if the cosine is positive''' | 52 '''Computes the collision course cosine only if the cosine is positive''' |
| 53 collisionCourseDotProducts = {}#[0]*int(self.timeInterval.length()) | 53 collisionCourseDotProducts = {}#[0]*int(self.timeInterval.length()) |
| 54 collisionCourseAngles = {} | 54 collisionCourseAngles = {} |
| 55 velocityAngles = {} | |
| 55 distances = {}#[0]*int(self.timeInterval.length()) | 56 distances = {}#[0]*int(self.timeInterval.length()) |
| 56 speedDifferentials = {} | 57 speedDifferentials = {} |
| 57 for instant in self.timeInterval: | 58 for instant in self.timeInterval: |
| 58 deltap = self.roadUser1.getPositionAtInstant(instant)-self.roadUser2.getPositionAtInstant(instant) | 59 deltap = self.roadUser1.getPositionAtInstant(instant)-self.roadUser2.getPositionAtInstant(instant) |
| 59 deltav = self.roadUser2.getVelocityAtInstant(instant)-self.roadUser1.getVelocityAtInstant(instant) | 60 v1 = self.roadUser1.getVelocityAtInstant(instant) |
| 61 v2 = self.roadUser2.getVelocityAtInstant(instant) | |
| 62 deltav = v2-v1 | |
| 63 velocityAngles[instant] = arccos(moving.Point.dot(v1, v2)/(v1.norm2()*v2.norm2())) | |
| 60 collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav) | 64 collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav) |
| 61 distances[instant] = deltap.norm2() | 65 distances[instant] = deltap.norm2() |
| 62 speedDifferentials[instant] = deltav.norm2() | 66 speedDifferentials[instant] = deltav.norm2() |
| 63 #if collisionCourseDotProducts[instant] > 0: | 67 #if collisionCourseDotProducts[instant] > 0: |
| 64 collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) | 68 collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) |
| 65 | 69 |
| 66 # todo shorten the time intervals based on the interaction definition | 70 # todo shorten the time intervals based on the interaction definition |
| 67 self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) | 71 self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) |
| 68 self.addIndicator(indicators.SeverityIndicator('Collision Course Angle', collisionCourseAngles)) | 72 self.addIndicator(indicators.SeverityIndicator('Collision Course Angle', collisionCourseAngles)) |
| 69 self.addIndicator(indicators.SeverityIndicator('Distance', distances)) | 73 self.addIndicator(indicators.SeverityIndicator('Distance', distances)) |
| 74 self.addIndicator(indicators.SeverityIndicator('Velocity Angle', velocityAngles)) | |
| 70 self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) | 75 self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) |
| 71 | 76 |
| 72 # todo test for interaction instants and interval, compute indicators | 77 # todo test for interaction instants and interval, compute indicators |
| 73 | 78 |
| 74 # if we have features, compute other indicators | 79 # if we have features, compute other indicators |
