unsigned int *buddhabrot(int bailout, int iter) { t_pos *sequence; int n, i, ix, iy; long double x, y; unsigned int *image = (unsigned int *)malloc(BUDDHA_WIN_X * BUDDHA_WIN_Y * sizeof(unsigned int)); sequence = (t_pos *)malloc(sizeof(t_pos) * iter); ft_bzero(sequence, sizeof(t_pos) * iter); ft_bzero(image, sizeof(int) * BUDDHA_WIN_X * BUDDHA_WIN_Y); srand48((unsigned int)time(NULL)); for (int t = 0; t < bailout; t++) { ft_fprintf(2, "Buddhabrot: Processing: %f%%\r", (float)t * 100 / (float)bailout); fflush(stdout); for (int tt = 0; tt < 1000000; tt++) { x = 6 * drand48() - 3; y = 6 * drand48() - 3; if (mandel_iter(iter, x, y, &n, sequence)) { for (i = 0; i < n; i++) { ix = 0.3 * BUDDHA_WIN_X * (sequence[i].x + 0.5) + BUDDHA_WIN_X / 2; iy = 0.3 * BUDDHA_WIN_Y * sequence[i].y + BUDDHA_WIN_Y / 2; if (ix >= 0 && iy >= 0 && ix < BUDDHA_WIN_X && iy < BUDDHA_WIN_Y) image[iy*BUDDHA_WIN_X+ix]++; } } } } return (image); }
void draw_down(t_param *param) { param->zoom.y1 = param->zoom.y1 * 1.1; if (param->wich == 1) mandel_iter(param, ¶m->zoom); else if (param->wich == 2) julia_iter(param, ¶m->zoom); else if (param->wich == 3) burning_iter(param, ¶m->zoom); }
void draw_left(t_param *param) { param->zoom.x1 = param->zoom.x1 / 1.1; if (param->wich == 1) mandel_iter(param, ¶m->zoom); else if (param->wich == 2) julia_iter(param, ¶m->zoom); else if (param->wich == 3) burning_iter(param, ¶m->zoom); }
void iter_moins(t_param *param) { param->zoom.iter_max = param->zoom.iter_max - 5; if (param->wich == 1) mandel_iter(param, ¶m->zoom); else if (param->wich == 2) julia_iter(param, ¶m->zoom); else if (param->wich == 3) burning_iter(param, ¶m->zoom); }