Example #1
0
File: FMM.py Project: sjtuzwj/FMMM
def singlelevel(Points):
    k = 0
    while (k < ST.TIME / ST.ITERATIONTIME):
        Tree = QT.tree(QT.Rect(ST.MINX, ST.MAXX, ST.MAXY, ST.MINY))
        Tree.QuadtreeBuild(Points.values())
        Tree.QuadTreeShrink(Tree.root)
        Multipole_Framework(Points, Tree)
        k = k + 1
Example #2
0
    def update(self):
        """

        Returns:

        """
        self.last_update = []
        quad_tree = QuadTree.QuadTree(
            QuadTree.Rect(self.board.centerx, self.board.centery,
                          self.board.width / 2, self.board.height / 2), 5)
        for key, orb in self.orbs.iteritems():
            quad_tree.insert(QuadTree.Point(orb.point.x, orb.point.y, key))

        self.move_snakes()
        self.orbs_collision(quad_tree)
        self.snakes_collision()
        self.border_collision()
        self.add_orbs()
Example #3
0
    def orbs_collision(self, quad_tree):
        """

        Args:
            quad_tree:

        Returns:

        """
        for snake in self.snakes.itervalues():
            for sector in [snake.head] + snake.tail:
                range = QuadTree.Rect(sector.point.x, sector.point.y,
                                      sector.radius + objects.Orb.MAX_RADIUS,
                                      sector.radius + objects.Orb.MAX_RADIUS)
                orbs = quad_tree.qurey(range)
                for orb_point in orbs:
                    key = orb_point.data
                    if key not in self.orbs:
                        continue

                    orb = self.orbs[key]
                    if sector.collide(orb):
                        self.del_orb(key)
                        snake.mass += orb.mass