def test_cells_between_poles_relative_to_sites_produced(self): total_desired_cells = 300 increment = 20 scale = 2 repetitions = 3 num_sites = list() num_sites_ratio = list() times = list() times_ratios = list() for r in range(repetitions): existing_points = list() t0 = timeit.default_timer() pdp.variable_row_poisson_discs_placement(existing_points, total_desired_cells) t1 = timeit.default_timer() t_diff = t1 - t0 num_sites.append(len(existing_points)) num_sites_ratio.append(len(existing_points)/float(total_desired_cells)) times.append(t_diff) times_ratios.append(t_diff/float(total_desired_cells)) #cells_between_poles += increment print("{0} of {1}: cells {2}, site {3}, time {4}, time ratio {5})".format(r+1, repetitions, total_desired_cells, len(existing_points), t_diff, t_diff/float(total_desired_cells))) total_desired_cells *= scale #print("Number of sites ({0} increment, ending {1}):".format(increment, cells_between_poles)) print("Number of sites ({0}* scaling, ending {1}):".format(scale, total_desired_cells)) print(num_sites) print("Sites per total_desired_cells:") print(num_sites_ratio) print("Generation times:") print(times) print("Time per total_desired_cells") print(times_ratios)
def __init__(self, seed=117, total_cells_desired=2000): random.seed(seed) print("World {}".format(seed)) # Remember cell generation param as it may be needed when refining self.total_cells_desired = total_cells_desired # Generate random points distributed across sphere surface self.voronoi_sites = list() print("Generating voronoi sites...") self.voronoi_sites = pdp.variable_row_poisson_discs_placement(self.voronoi_sites, self.total_cells_desired) print("Total sites: {0}".format(len(self.voronoi_sites))) # Create voronoi diagram self.all_boundary_nodes = list() self.all_cells = list() self.all_centre_nodes = dict() self.all_edges = list() self.edges_by_location = dict() self.boundary_nodes_by_location = dict() # Uses self.voronoi_sites to populate self.generate_voronoi_nodes() print("Total boundary nodes: {0}".format(len(self.all_boundary_nodes)))