示例#1
0
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()
示例#2
0
    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()
示例#3
0
    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       
示例#4
0
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:
示例#5
0
 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
示例#7
0
 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)