Пример #1
0
void	draw_me_one_line(t_gps *gps, t_data *data, t_map *map)
{
	data->dh = gps->x_b - gps->x_a;
	data->dl = gps->y_b - gps->y_a;
	data->c = -1;
	data->m = abs(data->dh) > abs(data->dl) ? abs(data->dh) : abs(data->dl);
	while (++data->c < data->m)
		img_pixel_put(gps, gps->x_a + data->c * data->dh / data->m,
				gps->y_a + data->c * data->dl / data->m, map);
}
Пример #2
0
void	display_texture(t_env *e, t_rgb **img, t_texture texture)
{
	int		x;
	int		y;

	y = -1;
	while (++y < texture.h)
	{
		x = -1;
		while (++x < texture.w)
			img_pixel_put(&e->cam->img, x, y, rgb_to_vec3(img[y][x]));
	}
}
Пример #3
0
static void	draw_line(t_env *e)
{
	int		dh;
	int		dl;
	int		c;
	int		m;

	dh = e->tmpx2 - e->tmpx;
	dl = e->tmpy2 - e->tmpy;
	c = -1;
	m = abs(dh) > abs(dl) ? abs(dh) : abs(dl);
	while (++c < m)
	{
		if (((e->tmpx + e->orix) > e->arg.winx &&
			(e->tmpx2 + e->orix) >= e->arg.winx) ||
			((e->tmpy + e->oriy) > e->arg.winy &&
			(e->tmpy2 + e->oriy) >= e->arg.winy) ||
			(((e->tmpx + e->orix) < 0 && (e->tmpx2 + e->orix) < 0) ||
			((e->tmpy + e->oriy) < 0 && (e->tmpy2 + e->oriy) < 0)))
			break ;
		img_pixel_put(e, e->orix + e->tmpx + (c * dh) / m,
					e->oriy + e->tmpy + (c * dl) / m);
	}
}
Пример #4
0
void	draw_line(t_env env, t_point src, t_point dst)
{
	int		h;
	int		err;
	int		e2;
	t_point	d;
	t_point	s;

	h = (src.h > dst.h ? src.h : dst.h);
	d.x = abs((dst.x - src.x));
	d.y = -abs((dst.y - src.y));
	s.x = (src.x < dst.x ? 1 : -1);
	s.y = (src.y < dst.y ? 1 : -1);
	err = d.x + d.y;
	while (src.x != dst.x || src.y != dst.y)
	{
		img_pixel_put(&env, src.x, src.y, color(&env, h));
		e2 = 2 * err;
		err = (e2 >= d.y ? err + d.y : err);
		src.x = (e2 >= d.y ? src.x + s.x : src.x);
		err = (e2 <= d.x ? err + d.x : err);
		src.y = (e2 <= d.x ? src.y + s.y : src.y);
	}
}