Exemple #1
0
void			ft_texture(t_ba *e, t_obj *o, double norm[3])
{
	double		vn[3];
	double		ve[3];
	double		tmp[3];
	double		img[2];
	double		grk[2];

	ft_init_text_vec(vn, ve, o);
	ft_normalize_ve_vn(ve, vn);
	grk[0] = acos(-scalar(vn, norm));
	if (o->text == 1)
		img[0] = e->doge->y * (1 - grk[0] / M_PI);
	else if (o->text == 2)
		img[0] = e->mars->y * (1 - grk[0] / M_PI);
	else if (o->text == 3)
		img[0] = e->eye->y * (1 - grk[0] / M_PI);
	grk[1] = (acos(scalar(norm, ve) / sin(grk[0]))) / (2.0 * M_PI);
	tmp[X] = (vn[Y] * ve[Z]) - (ve[Z] * vn[Y]);
	tmp[Y] = (vn[Z] * ve[X]) - (ve[X] * vn[Z]);
	tmp[Z] = (vn[X] * ve[Y]) - (ve[Y] * vn[X]);
	if (scalar(tmp, norm) > 0)
		img[1] = grk[1];
	else
		img[1] = 1 - grk[1];
	ft_apply_texture(e, o, img);
}
Exemple #2
0
static void		ft_draw_wall(t_mlx *mx, int y, int pixel)
{
	if (mx->map.data[mx->v.map.x][mx->v.map.y] > 2 && mx->b & 2)
		ft_apply_texture(&mx->map, &mx->v, mx->height, y);
	else
		ft_set_color(&mx->v);
	ft_put_pixel(&mx->v, mx->data, pixel, WALL);
}