color scheme almost there

This commit is contained in:
asus
2024-01-10 17:13:28 +01:00
parent b2196a112e
commit 79fd1f5212
10 changed files with 131 additions and 18 deletions
-2
View File
@@ -8,7 +8,5 @@ quick description
### ressources ### ressources
- minilibx : https://harm-smits.github.io/42docs/libs/minilibx - minilibx : https://harm-smits.github.io/42docs/libs/minilibx
- draw a line : https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm - draw a line : https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
- [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -1
View File
@@ -74,7 +74,8 @@ int **parse_map(t_fdf *fdf, int fd);
# define Z_HEIGHT 10 # define Z_HEIGHT 10
// color for altitude // color for altitude
# define Z_COLOR 0xffffff; # define COLOR_START 0xffffff
# define COLOR_END 0x00d700
# define ESCAPE 65307 # define ESCAPE 65307
# define UP 65362 # define UP 65362
+6 -6
View File
@@ -14,12 +14,12 @@
0 0 0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 8,0xFFFFFF 8,0xFFFFFF 8,0xFFFFFF 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 8,0xFFFFFF 8,0xFFFFFF 8,0xFFFFFF 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 8,0xFFFFFF 8,0xFFFFFF 8,0xFFFFFF 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 8,0xFFFFFF 8,0xFFFFFF 8,0xFFFFFF 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 8,0xFFFFFF 9,0xFFFFFF 8,0xFFFFFF 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 8,0xFFFFFF 8,0xFFFFFF 8,0xFFFFFF 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0 0 0 0 0
0 0 0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0 0 0 0 0
+120 -6
View File
@@ -39,27 +39,108 @@ void draw_grid(t_fdf *fdf, int i, int j)
draw_lines(fdf, point_start, point_end); draw_lines(fdf, point_start, point_end);
free(point_start); free(point_start);
free(point_end); free(point_end);
ft_putchar_fd('\n',1);
}
// return the position of the point X
// in percentage of the total height of the map :
// z_min---start---point---end----z_max
// 0%--------s%-----P-------e%-----100%
// line: -------------
// ex. . . . . . ---e
// --- .
// px. . . -p- .
// ---. .
// s-- . .
// py ey
// return value is 0 <= X <= 100
// - z_total : z_max - z_min
// - start : start
// - line : end - start
// - p_numerator : px + py
// - p_denominator : ex + ey
int color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_denominator) {
int z_total;
int start;
int line;
int percent;
z_total = fdf->z_amplitude;
line = ft_abs(p_end[2] - p_start[2]);
line *= 100;
if (p_start[2] < p_end[2])
{
start = p_start[2] - fdf->min_z;
start *= 100;
}
else
{
start = p_end[2] - fdf->min_z;
start *= 100;
p_numerator = p_denominator - p_numerator;
}
percent = (start + line * p_numerator / p_denominator) / z_total;
/*
if (percent > 100)
{
ft_putchar_fd('[',1);
ft_putnbr_fd(z_total,1);
ft_putchar_fd(',',1);
ft_putnbr_fd(start,1);
ft_putchar_fd(',',1);
ft_putnbr_fd(line,1);
ft_putchar_fd(',',1);
ft_putnbr_fd(p_numerator,1);
ft_putchar_fd(',',1);
ft_putnbr_fd(p_denominator,1);
ft_putchar_fd(',',1);
ft_putnbr_fd(percent,1);
ft_putchar_fd(']',1);
}
*/
/*
start end min max z_total start line p_numerator p_denominator percent
( 1, -1, -1, 1)[ 2, 200, 200, 16, 61, 126]
( -1, 1, -1, 1)[ 2, 0, 200, -8, -7, 114]
percent = (start + line * p_numerator / p_denominator) / z_total;
*/
return (percent);
} }
void draw_lines(t_fdf *fdf, int *start, int *end) void draw_lines(t_fdf *fdf, int *start, int *end)
{ {
int dx; int dx;
int dy; int dy;
int z;
int i; int i;
int j; int j;
int z;
if (end) if (end)
{ {
dx = end[0] - start[0]; dx = end[0] - start[0];
dy = end[1] - start[1]; dy = end[1] - start[1];
/*
ft_putchar_fd('(',1);
ft_putnbr_fd(start[2],1);
ft_putchar_fd(',',1);
ft_putnbr_fd(end[2],1);
ft_putchar_fd(',',1);
ft_putnbr_fd(fdf->min_z,1);
ft_putchar_fd(',',1);
ft_putnbr_fd(fdf->max_z,1);
ft_putchar_fd(')',1);
*/
i = 0; i = 0;
j = 0; j = 0;
z = start[2];
while (ft_abs(i) <= ft_abs(dx) && ft_abs(j) <= ft_abs(dy)) while (ft_abs(i) <= ft_abs(dx) && ft_abs(j) <= ft_abs(dy))
{ {
if ((dx + dy) && (i + j)) z = color_percent(fdf, start, end, ft_abs(i) + ft_abs(j), ft_abs(dx) + ft_abs(dy));
z = start[2] + (end[2] - start[2]) * (i + j) / (dx + dy);
draw_color_pixel(fdf, start[0] + i, start[1] + j, z); draw_color_pixel(fdf, start[0] + i, start[1] + j, z);
if (!ft_abs(dx) || ft_abs(j) < ft_abs(i * dy / dx)) if (!ft_abs(dx) || ft_abs(j) < ft_abs(i * dy / dx))
j += ft_sign(dy); j += ft_sign(dy);
@@ -72,13 +153,44 @@ void draw_lines(t_fdf *fdf, int *start, int *end)
void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int z) void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int z)
{ {
int color; int color;
color = COLOR_START;
/*
int color_start;
int color_end;
color_start = COLOR_START;
color_end = COLOR_END;
int color_r;
int color_g;
int color_b;
*/
color = color ^ (((0xff / fdf->z_amplitude) * (z - fdf->min_z)) << 16);
color = color ^ (((0xff / fdf->z_amplitude) * (z - fdf->min_z)) << 8);
color = color ^ (((0xff / fdf->z_amplitude) * (z - fdf->min_z)) << 0);
/*
int color;
color = COLOR_START;
z -= (z * fdf->zoom) / fdf->offset;
z /= fdf->altitude;
if (z > fdf->min_z && fdf->z_amplitude)
{
color = color ^ (((0xff / fdf->z_amplitude) * (z - fdf->min_z)) << 16);
color = color ^ (((0xff / fdf->z_amplitude) * (z - fdf->min_z)) << 0);
}
*/
/*
int color;
int height; int height;
color = Z_COLOR; color = COLOR_START;
height = z; height = z;
if (height != 0) if (height != 0)
height /= fdf->altitude; height /= fdf->altitude;
//height -= (height * fdf->zoom) / fdf->offset;
height -= height / fdf->offset; height -= height / fdf->offset;
if (height > fdf->min_z && fdf->z_amplitude) if (height > fdf->min_z && fdf->z_amplitude)
{ {
@@ -87,6 +199,8 @@ void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int z)
// color = color ^ (((0xff / fdf->z_amplitude) * (height - fdf->min_z)) << 16); // color = color ^ (((0xff / fdf->z_amplitude) * (height - fdf->min_z)) << 16);
// color = color ^ (((0xff / fdf->z_amplitude) * (height - fdf->min_z)) << 0); // color = color ^ (((0xff / fdf->z_amplitude) * (height - fdf->min_z)) << 0);
} }
*/
draw_pixel(fdf, new_x, new_y, color); draw_pixel(fdf, new_x, new_y, color);
} }