Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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)));
}
Ejemplo n.º 5
0
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);
	}
}