void *julia_cube(void *d) { int l[3]; long double z[4]; long double tmp; t_thread *m; m = (t_thread*)d; l[0] = m->lim[0] - 1; while (++l[0] < m->lim[2] && (l[1] = m->lim[1] - 1)) while (++l[1] < m->lim[3] && (l[2] = -1)) { z[2] = -0.7 + m->s->x / X; z[3] = 0.27015 + m->s->y / Y; z[0] = 1.5 * (l[0] - X / 2) / (0.5 * X) * m->s->z[0] + m->s->m[0]; z[1] = (l[1] - Y / 2) / (0.5 * Y) * m->s->z[0] + m->s->m[1]; while (++l[2] < m->s->imax && (z[0] * z[0] + z[1] * z[1]) < 4) { tmp = z[0]; z[0] = z[0] * z[0] - z[1] * z[1] + z[2]; z[1] = -2 * z[1] * tmp - z[3]; } (l[2] == m->s->imax) ? px_img(m->s, l[0], l[1], black(fmod(fabsl(l[2] / z[0]), 999))) : px_img(m->s, l[0], l[1], ft_colors_earth(fabsl(l[2] * z[1]))); } return (NULL); }
void *julia(void *d) { long double z[6]; int i; long double tmp; t_thread *m; m = (t_thread*)d; z[4] = m->lim[0] - 1; while (++z[4] < m->lim[2] && (z[5] = m->lim[1] - 1)) while (++z[5] < m->lim[3] && (i = -1)) { z[2] = -0.7 + m->s->x / 1600; z[3] = 0.27015 + m->s->y / 1200; z[0] = 1.5 * (z[4] - X / 2) / (X / 2) * m->s->z[0] + m->s->m[0]; z[1] = (z[5] - Y / 2) / (0.5 * Y) * m->s->z[0] + m->s->m[1]; while (++i < m->s->imax && (z[0] * z[0] + z[1] * z[1]) < 4) { tmp = z[0]; z[0] = z[0] * z[0] - z[1] * z[1] + z[2]; z[1] = 2 * z[1] * tmp + z[3]; } (i == m->s->imax) ? px_img(m->s, z[4], z[5], ft_colors_wat(fabsl(i * z[1]))) : px_img(m->s, z[4], z[5], ft_colors_earth(999 - fabsl(i * z[1]))); } return (NULL); }
void *mandelbrot(void *d) { int l[3]; long double z[8]; t_thread *m; m = (t_thread*)d; l[0] = m->lim[0] - 1; while (++l[0] < m->lim[2] && (l[1] = m->lim[1] - 1)) while (++l[1] < m->lim[3] && (l[2] = -1)) { z[2] = l[0] / (X / (2.7) / m->s->z[0]) - 2.1 + m->s->m[0] * 2; z[3] = l[1] / (Y / (2.4) / m->s->z[2]) - 1.2 + m->s->m[1] * 2; z[0] = l[0] / X; z[1] = l[1] / Y; while (++l[2] < m->s->imax && ((z[4] = z[0] * z[0]) + (z[5] = z[1] * z[1])) < 4) { z[6] = z[0]; z[0] = z[4] - z[5] + z[2]; z[1] = 2 * z[1] * z[6] + z[3]; } (l[2] == m->s->imax) ? px_img(m->s, l[0], l[1], ft_colors_earth(fabsl(l[2] * z[1]))) : px_img(m->s, l[0], l[1], ft_colors_wat(999 - fabsl(l[2] * z[1]))); } return (NULL); }
static void triangle_colors(int *l, long double *z, t_thread *m) { if (l[2] == m->s->imax) px_img(m->s, l[0], l[1], ft_colors_earth(fmod(fabsl(l[2] * z[0]), 999))); else if (l[2] > m->s->imax / 2) px_img(m->s, l[0], l[1], ft_colors_wat(fmod(fabsl(l[2] * z[1]), 999))); else px_img(m->s, l[0], l[1], burn(fmod(fabsl(l[2] * z[0]), 999))); }
void line_px_img(t_struck *s, int *l, int col) { float x; float y; float rep; float d[3]; x = 0; y = 0; d[1] = l[1] - l[3]; d[2] = l[0] - l[2]; rep = init_rep(d[2], d[1]); while (x != d[2] || y != d[1]) { px_img(s, l[0] - x, l[1] - y, col); if ((fabs(d[2]) >= fabs(d[1])) || fabs(y) >= fabs(rep)) trace_line_bis(d[2], d[1], &x, &rep); if ((fabs(d[1]) >= fabs(d[2])) || fabs(x) >= fabs(rep)) trace_line_bis(d[1], d[2], &y, &rep); } }