Ejemplo n.º 1
0
        def __calcInitialCentroids():
            self.__centroidByEvent = {}
            self.__centroids = []
            def createCentroid(point):
                centroid = Centroid()
                centroid.addMember(point)
                self.__centroidByEvent[point] = centroid
                self.__centroids.append(centroid)

            maxDist = 0
            points = None
            if len(self.__eventList)>1:
                cursors = self.__eventList.getCursors()
                for p in cursors:
                    for q in cursors:
                        dist = getDistSquared(p.getPos(),q.getPos())
                        if dist >= maxDist and p != q:
                            points = p,q
                            maxDist = dist

                assert(points)
                for point in points:
                    createCentroid(point)
            elif len(self.__eventList) == 1:
                createCentroid(self.__eventList.getCursors()[0])
Ejemplo n.º 2
0
 def __calcMemberships (self):
     """ returns True if a membership changed, else False."""
     changed = False
     if not len(self.__centroids):
         return changed
     for point in self.__eventList.getCursors():
         closestCentroid = self.__centroids[0]
         minDist = getDistSquared(point.getPos(), closestCentroid.getPos())
         for centroid in self.__centroids:
             distance = getDistSquared (point.getPos(), centroid.getPos())
             if distance < minDist:
                 minDist = distance
                 closestCentroid = centroid
         if not closestCentroid.hasMember(point):
             self.__doNewMotion = True
             if point in self.__centroidByEvent:
                 self.__centroidByEvent[point].removeMember(point)
             self.__centroidByEvent[point] = closestCentroid
             closestCentroid.addMember(point)
             changed = True
     return changed