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