void julia2(t_iter iter, t_zoom *zoom, t_param *param, t_pnt *pnt) { int i; i = 0; while ((iter.z_r * iter.z_r + iter.z_i * iter.z_i) < 4 && i < zoom->iter_max) { iter.tmp = iter.z_r; iter.z_r = iter.z_r * iter.z_r - iter.z_i * iter.z_i + iter.c_r; iter.z_i = 2 * iter.z_i * iter.tmp + iter.c_i; i++; } if (i == zoom->iter_max) draw_px(pnt->x, pnt->y, 0xFFFFFF, param); else draw_px(pnt->x, pnt->y, (i * 255 / zoom->iter_max) << param->color, param); }
static void julia_start(t_context *c, t_mandelbrot *m, const int startx, const int endx) { t_point px; const int *colors = c->colormap; px.x = startx; while (px.x-- > endx) { m->z_re = (t_fracval)(px.x * m->zoom) + m->x1; px.y = c->x->height; while (px.y--) { m->z_im = (t_fracval)(px.y * m->zoom) + m->y1; draw_px(c->x, &px, colors[julia_core(m)]); } } }
static void display_vertical_tex(t_context *c, t_ray *ray, t_line *line) { const double h = (double)c->x->height; t_point px; t_point tpx; t_texture *tex; unsigned int color; tex = &c->map.tex[texture_id(c, ray)]; tpx.x = texture_get_x(c, ray, tex); px = line->start; while (px.y < line->end.y) { tpx.y = (int)(((double)(px.y * 2) - h + ray->h) * (((double)tex->height / 2.0) / ray->h)); if (tpx.y >= 0) { color = texture_px(tex, tpx); if ((ray->side == 1) && (tex->id >= 2)) color = (color >> 1) & 8355711; draw_px(c->x, &px, color); } px.y++; }