int main(int argc, char **argv)
{
    srand(time(NULL));
    clock_t beg, end;

    int size = 50;
    grid *grd = grid_allocate(size, size);

    beg = clock();
    grid_create(grd, 0.6);
    cl_list* clusters = clusterization(grd);
    end = clock();
    
    int i, j;
    for (i = 0; i < size; i++)
    {
        for (j = 0; j < size; j++)
            printf("%d", grd->cells[i * size + j]);
        printf("\n");
    }
    cl_list_print(clusters);
    
    create_image("img.png", 2000, grd, clusters);
    
    grid_free(grd);
    
    printf("Finished in %g sec\n", (double)(end - beg) / CLOCKS_PER_SEC);
    
    return 0;
}
Beispiel #2
0
// Create the simple decomposition grid.
struct grid_domain_t* grid_init_simple(
	int nx, int ny, int ns,	int sx, int sy, int ss,
	int bx, int ex, int by, int ey, int bs, int es)
{
	struct grid_domain_t* domains =
		grid_allocate(
			nx, ny, ns, sx, sy, ss,
			bx, ex, by, ey, bs, es);

	int nsubdomains = sx * sy * ss;

	grid_decompose_balanced(domains,
		nx, ny, ns, sx, sy, ss,
		bx, ex, by, ey, bs, es);

	// Set domains overlaps.
	grid_set_overlaps(domains, 0, sx, sy, ss,
		bx, ex, by, ey, bs, es);

	// Create an fictive empty domain
	// to be referenced in heighbourhood links.
	struct grid_domain_t* empty = NULL;
	size_t szempty = sizeof(struct grid_domain_t) * (PTRN_N + 1);
	empty = (struct grid_domain_t*)malloc(szempty);
	memset(empty, 0, szempty);
	empty->subdomains = (struct grid_domain_t*)(empty + 1);
	
	// Link domains using fictive empty domain.
	grid_set_links(domains, empty, 0, sx, sy, ss,
		bx, ex, by, ey, bs, es);

	// Set domains edges subgrid.
	grid_set_edges(domains, sx, sy, ss, 
		bx, ex, by, ey, bs, es);

	// Set domains links without fictive empty domain.
	grid_set_links(domains, 0, 0, sx, sy, ss,
		bx, ex, by, ey, bs, es);
	
	free(empty);

	// Multiply normalized overlaps by real.
	grid_overlaps_multiply(domains,
		nx, ny, ns, sx, sy, ss,
		bx, ex, by, ey, bs, es);

	// Calculate domains sizes.	
	grid_set_sizes(domains, nsubdomains + 1);
	
	// Perform consistency checks.
	grid_check_valid(domains, nsubdomains);
	
	return domains;
}