Mercurial Hosting > traffic-intelligence
diff python/events.py @ 317:d280b881e860
added indicator min distance
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 12 Apr 2013 18:03:04 -0400 |
parents | f7ca78a11ea6 |
children | 419f30491a4b 4b5fe2de1e8d |
line wrap: on
line diff
--- a/python/events.py Fri Apr 12 15:22:00 2013 -0400 +++ b/python/events.py Fri Apr 12 18:03:04 2013 -0400 @@ -51,19 +51,37 @@ deltap = self.movingObject1.getPositionAtInstant(instant)-self.movingObject2.getPositionAtInstant(instant) deltav = self.movingObject2.getVelocityAtInstant(instant)-self.movingObject1.getVelocityAtInstant(instant) collisionCourseDotProducts[instant] = moving.Point.dot(deltap, deltav) - distances[instant] = deltap.norm2() # todo compute closest feature distance, if features + distances[instant] = deltap.norm2() speedDifferentials[instant] = deltav.norm2() if collisionCourseDotProducts[instant] > 0: - collisionCourseCosines[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) + collisionCourseAngles[instant] = arccos(collisionCourseDotProducts[instant]/(distances[instant]*speedDifferentials[instant])) # todo shorten the time intervals based on the interaction definition self.addIndicator(indicators.SeverityIndicator('Collision Course Dot Product', collisionCourseDotProducts)) self.addIndicator(indicators.SeverityIndicator('Distance', distances)) self.addIndicator(indicators.SeverityIndicator('Speed Differential', speedDifferentials)) - self.addIndicator(indicators.SeverityIndicator('Collision Course Cosine', collisionCourseCosines)) + self.addIndicator(indicators.SeverityIndicator('Collision Course Angle', collisionCourseAngles)) # todo test for interaction instants and interval, compute indicators + # if we have features, compute other indicators + if self.movingObject1.features and self.movingObject2.features: + from scipy.spatial.distance import cdist + minDistance={} + for instant in self.timeInterval: + positions1 = [f.getPositionAtInstant(instant).astuple() for f in self.movingObject1.features if f.existsAtInstant(instant)] + positions2 = [f.getPositionAtInstant(instant).astuple() for f in self.movingObject2.features if f.existsAtInstant(instant)] + distance = cdist(positions1, positions2, metric = 'euclidean') + minDistance[instant] = distance.min() + self.addIndicator(indicators.SeverityIndicator('Minimum Distance', minDistance)) + + def computeCollisionPoints(self, predictionParameters, collisionDistanceThreshold, timeHorizon): + if self.movingObject1.features and self.movingObject2.features: + collisionPoints = prediction.computeCollisions(self.movingObject1, self.movingObject2, predictionParameters, collisionDistanceThreshold, timeHorizon) + self.addIndicator(indicators.SeverityIndicator('collisionPoints', collisionPoints)) + else: + print('Features not associated with objects') + def addVideoFilename(self,videoFilename): self.videoFilename= videoFilename