int ft_draw_fractal(t_var *v) { int color; int x; int y; int i; y = 0; while (y < v->win_h) { x = 0; while (x < v->win_w) { if (v->type == 1 || v->type == 3) i = ft_mandel(v, x, y); else if (v->type == 2) i = ft_julia(v, x, y); color = ft_hsv(i % 256, v->ftl, i); ft_pixel_put(v, x, y, color); x++; } y++; } mlx_put_image_to_window(v->mlx, v->win, v->img, 0, 0); return (0); }
void ft_grid(t_env *e) { t_pts *coord; t_color c; int x; int y; coord = e->pts; c.r = 255; while (coord) { x = (coord->x) * 4 + 10 - coord->z; y = (coord->y) * 4 + 10 - coord->z; if (coord->z != 0) { c.b = 0; c.g = 0; } else { c.b = 255; c.g = 255; } ft_pixel_put(e, x, y, &c); coord = coord->next; } }
void point_and_line(t_env e, size_t x, size_t y) { ft_pixel_put(e, e.map[y][x].z, e.map[y][x].x, e.map[y][x].y); if (x != e.x - 1) if (is_map(e, x, y) || is_map(e, x + 1, y)) draw_segment(e, e.map[y][x], e.map[y][x + 1]); if (y != e.y - 1) if (is_map(e, x, y) || is_map(e, x, y + 1)) draw_segment(e, e.map[y][x], e.map[y + 1][x]); }
void right_draw(t_env e, t_point p1, t_point p2, float a) { float flt; float b; b = p1.y - a * p1.x; (p2.x - p1.x > 0) ? p1.x++ : p1.x--; while (p1.x != p2.x) { flt = a * p1.x + b; p1.y = (int)roundf(flt); p2.z = (p2.z > p1.z) ? p2.z : p1.z; ft_pixel_put(e, p2.z, p1.x, p1.y); (p2.x - p1.x > 0) ? p1.x++ : p1.x--; } }
void down_draw(t_env e, t_point p1, t_point p2, float a) { float flt; float b; b = p1.y - a * p1.x; (p2.y - p1.y > 0) ? p1.y++ : p1.y--; while (p1.y != p2.y) { if (p2.x != p1.x) { flt = (p1.y - b) / a; p1.x = (int)roundf(flt); } p2.z = (p2.z > p1.z) ? p2.z : p1.z; ft_pixel_put(e, p2.z, p1.x, p1.y); (p2.y - p1.y > 0) ? p1.y++ : p1.y--; } }
void bird(t_env *env, int *i) { double n; double tmp; ECR = (env->f.x + DECALX) / (double)env->f.zoom + env->f.x1; ECI = (env->f.y + DECALY) / (double)env->f.zoom + env->f.y1; EZR = 0; EZI = 0; n = EZR * EZR + EZI * EZI; while (++(*i) < ITERM && n < 4) { tmp = EZI; EZI = ((EZR * EZR * 3) - (EZI * EZI)) * fabs(EZI) + ECI; EZR = ((EZR * EZR) - (tmp * tmp * 3)) * fabs(EZR) + ECR; n = EZR * EZR + EZI * EZI; } ft_pixel_put(env, color(*i, (EZR * EZR + EZI * EZI), env)); }
void cubic_mandelbrot(t_env *env, int *i) { double n; double tmp; env->f.cr = (env->f.x + DECALX) / env->f.zoom + env->f.x1; env->f.ci = (env->f.y + DECALY) / env->f.zoom + env->f.y1; env->f.zr = 0; env->f.zi = 0; n = EZR * EZR + EZI * EZI; while (n < 4 && ++(*i) < env->f.iter_max) { tmp = env->f.zr; env->f.zr = EZR * EZR * EZR - 3 * EZR * EZI * EZI + env->f.cr; env->f.zi = 3 * tmp * tmp * EZI - EZI * EZI * EZI + env->f.ci; n = EZR * EZR + EZI * EZI; } ft_pixel_put(env, color(*i, (EZR * EZR + EZI * EZI), env)); }