Mercurial Hosting > 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 |