Example #1
0
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);
}
Example #2
0
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)]);
		}
	}
}
Example #3
0
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++;
	}