Beispiel #1
0
class QuadTreeFunctionTest(unittest.TestCase):
    def setUp(self) -> None:
        self.quadtree = QuadTree(Bounds(0, 0, 400, 400),
                                 max_objects=4,
                                 max_level=5)

    def test_points_insert(self):
        with open('./tests/example_data.json', 'r') as f:
            json_data = json.loads(f.read())
        points = json_data['data']
        for point in points:
            self.quadtree.insert(Point(point['x'], point['y'], point['value']))

    def test_retrieve(self):
        objects = self.quadtree.retrieve(Bounds(200, 200, 50, 50))

    def test_retrieve_intersections(self):
        objects = self.quadtree.retrieve_intersections(Bounds(
            200, 200, 50, 50))

    def test_nearest_neighbors(self):
        points = self.quadtree.nearest_neighbors(Point(225, 225), radius=25)

    def test_visualization(self):
        self.quadtree.visualize()

    def tearDown(self) -> None:
        self.quadtree.clear()
Beispiel #2
0
                w = random.randint(3, 40)
                h = random.randint(3, 40)
                color = (random.randint(64, 250), random.randint(64, 250), random.randint(64, 250))
                quadtree.add(RectData(x, y, w, h, color))

                mx1, my1, mx2, my2 = (0, 0, 0, 0)
                mdown = False
                selected = []

            if event.key == pygame.K_b:
                for d in selected:
                    quadtree.remove(d)
                selected = []

            if event.key == pygame.K_c:
                quadtree.clear()
                mx1, my1, mx2, my2 = (0, 0, 0, 0)
                mdown = False
                selected = []

        if event.type == pygame.MOUSEBUTTONDOWN:
            mdown = True
            mx1, my1 = event.pos

        if event.type == pygame.MOUSEBUTTONUP:
            mdown = False

            if mx2 < mx1:
                mx1, mx2 = mx2, mx1

            if my2 < my1:
					w = random.randint(3,40)
					h = random.randint(3,40)
					color = (random.randint(64,250), random.randint(64,250), random.randint(64,250))
					quadtree.add(RectData(x, y, w, h, color))
					
					mx1,my1,mx2,my2 = (0,0,0,0)
					mdown = False
					selected = []
					
				if event.key == pygame.K_BACKSPACE:
					for d in selected:
						quadtree.remove(d)
					selected = []
					
				if event.key == pygame.K_DELETE:
					quadtree.clear()
					mx1,my1,mx2,my2 = (0,0,0,0)
					mdown = False
					selected = []
					
					
			if event.type == pygame.MOUSEBUTTONDOWN:
				mdown = True
				mx1, my1 = event.pos
				
			if event.type == pygame.MOUSEBUTTONUP:
				mdown = False
				
				if mx2 < mx1:
					mx1,mx2 = mx2,mx1