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); }
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])); } }
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); } }
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); } }