changeset 551:dc3739ac2371

rearranged all distance computations between points
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 08 Jul 2014 16:59:35 -0400
parents 5668af2ff515
children ca6bded754ac
files python/moving.py
diffstat 1 files changed, 9 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/python/moving.py	Tue Jul 08 16:33:45 2014 -0400
+++ b/python/moving.py	Tue Jul 08 16:59:35 2014 -0400
@@ -812,30 +812,23 @@
             plot(list(self.getTimeInterval()), speeds)
 
     @staticmethod
-    def distances(obj1, obj2, instant):
+    def distances(obj1, obj2, instant1, _instant2 = None):
         from scipy.spatial.distance import cdist
-        positions1 = [f.getPositionAtInstant(instant).astuple() for f in obj1.features if f.existsAtInstant(instant)]
-        positions2 = [f.getPositionAtInstant(instant).astuple() for f in obj2.features if f.existsAtInstant(instant)]
-        return cdist(positions1, positions2, metric = 'euclidean')
-        
-    @staticmethod
-    def minDistance(obj1, obj2, instant):
-        return MovingObject.distances(obj1, obj2, instant).min()
-
-    @staticmethod
-    def distances2(obj1, obj2, instant1,instant2):
-        from scipy.spatial.distance import cdist
+        if _instant2 == None:
+            instant2 = instant1
+        else:
+            instant2 = _instant2
         positions1 = [f.getPositionAtInstant(instant1).astuple() for f in obj1.features if f.existsAtInstant(instant1)]
         positions2 = [f.getPositionAtInstant(instant2).astuple() for f in obj2.features if f.existsAtInstant(instant2)]
         return cdist(positions1, positions2, metric = 'euclidean')
         
     @staticmethod
-    def minDistance2(obj1, obj2, instant1,instant2):
-        return MovingObject.distances2(obj1, obj2, instant1,instant2).min()
+    def minDistance(obj1, obj2, instant1, instant2 = None):
+        return MovingObject.distances(obj1, obj2, instant1, instant2).min()
 
     @staticmethod
-    def maxDistance(obj1, obj2, instant):
-        return MovingObject.distances(obj1, obj2, instant).max()
+    def maxDistance(obj1, obj2, instant, instant2 = None):
+        return MovingObject.distances(obj1, obj2, instant1, instant2).max()
 
     def maxSize(self):
         '''Returns the max distance between features
@@ -977,7 +970,6 @@
         # what to do: threshold for most common type? self.setUserType()
         return possibleUserTypes
 
-
     @staticmethod
     def collisionCourseDotProduct(movingObject1, movingObject2, instant):
         'A positive result indicates that the road users are getting closer'