def draw(): background(120) stroke(255) stroke_weight(5) tree = qt.Quadtree() for p in points: tree.insert(p) point(p.x, p.y) stroke(100) stroke_weight(2) tree.show()
def __init__(self): super(QuadTreeDemoWidget, self).__init__() self.setWindowTitle('Quadtree') self.total_points = 800 self.selected_quad = None self.points = [] layout = QtWidgets.QVBoxLayout() self.label = QtWidgets.QLabel("points") self.label.setStyleSheet("QLabel { background-color : white;}") self.setLayout(layout) self.quadtree = quadtree.Quadtree(QtCore.QRectF()) quadtree.Quadtree.capacity = 200 layout.addWidget(self.label) layout.addStretch() self.update_label()
def __init__(self, level, is_dirichlet): center = np.array([0.5, 0.5]) size = 1.0 self.grid = quadtree.Quadtree(center=center, size=size) self.grid.split_to_level(level) self.vertices_coords_to_idx, \ self.number_of_vertices_per_level, \ self.boundary_vertices = self.grid.get_vertices() self.vertices_idx_to_coords = {v: k for k, v in self.vertices_coords_to_idx.items()} self.grid.set_all_cell_vertices(self.vertices_coords_to_idx) self.grid.set_all_cell_indices() self.dirichlet_vertices = set() for v in self.boundary_vertices: eps = 1e-8 if is_dirichlet(self.vertices_idx_to_coords[v]): self.dirichlet_vertices.add(v) dirichlet_vertices_array = np.array([*self.dirichlet_vertices]) # We do not store the data for Dirichlet values self.data_size_per_level = [] for level in range(self.grid.get_max_level()+1): n_vert = self.number_of_vertices_per_level[level] n_dirichlet_vert = len( dirichlet_vertices_array[ dirichlet_vertices_array < n_vert]) self.data_size_per_level.append(n_vert - n_dirichlet_vert) self.vertex_idx_to_data_idx = np.zeros(self.number_of_vertices_per_level[-1], dtype=np.int32) self.data_idx_to_vertex_idx = np.zeros(self.data_size_per_level[-1], dtype=np.int32) cur_data_idx = 0 for i in range(self.number_of_vertices_per_level[-1]): if i in self.dirichlet_vertices: self.vertex_idx_to_data_idx[i] = -1 else: self.vertex_idx_to_data_idx[i] = cur_data_idx self.data_idx_to_vertex_idx[cur_data_idx] = i cur_data_idx += 1
import pygame import quadtree # Initializing pygame pygame.init() # width and height of the main window screen width, height = 1200, 600 # Creating a surface surface = pygame.display.set_mode((width, height)) # Title of the window: pygame.display.set_caption('Quadtree-Python') # Creating a quadtree root = quadtree.Rectangle(0, 0, width, height) qt = quadtree.Quadtree(root, 4) points = [] # list to store the point clicks color = (13, 17, 23) # main window color color_rect = (201, 209, 217) # color for rectangles color_point = (54, 213, 83) # color for points surface.fill(color) # filling the main window with color # Window loop running = True while running: # Drawing the root rectangle pygame.draw.rect(surface, color_rect, pygame.Rect(0, 0, width, height), 1) ev_list = pygame.event.get() # list of events for event in ev_list:
def __init__(self): self.__points = [] self.marching_squares = marchingsquares.MarchingSquares() self.quadtree = quadtree.Quadtree() self.mapper = {}
# Algorytmy Grafowe 2019/2020 # # Integracyjne testy automatyczne # # Stanislaw Denkowski # # Maciej Tratnowiecki # ######################################### # Import wykorzystywanych modulow import generator import kdtree import quadtree from random import randint if __name__ == '__main__': test = generator.generate_points(100) kd = kdtree.Kdtree(test) quad = quadtree.Quadtree(test) v = 1000 while True: xl = randint(-v, v) xh = randint(-v, v) yl = randint(-v, v) yh = randint(-v, v) s1 = kd.find(xl, xh, yl, yh) s2 = quad.find(xl, xh, yl, yh) if set(s1) != set(s2): print("ERROR!") print(test) break
def generate_quadtree(self): self.quadtree = quadtree.Quadtree( QtCore.QRectF(0, 0, self.width(), self.height())) for p in self.points: self.quadtree.insert(p)