Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
edcf45967b | ||
|
|
5438795246 | ||
|
|
4bcb3b03c5 | ||
|
|
50080e151a | ||
|
|
8ff330b9d9 | ||
|
|
10d44297b5 | ||
|
|
61a08d8005 | ||
|
|
c68e96e96a | ||
|
|
91ff4568ff | ||
|
|
5f3588466f | ||
|
|
7746ffd307 | ||
|
|
6145dc22a3 | ||
|
|
c2821eed0a | ||
|
|
0b54d8c015 | ||
|
|
e1d5613392 | ||
|
|
1553685882 | ||
|
|
cebfe75798 | ||
|
|
98db1cc51a | ||
|
|
70261e3ecb | ||
|
|
be343771ee |
5
.gitignore
vendored
@@ -48,6 +48,7 @@ Thumbs.db
|
||||
*.mov
|
||||
*.wmv
|
||||
|
||||
# c object files
|
||||
/builds/
|
||||
# c files
|
||||
*.o
|
||||
fdf
|
||||
|
||||
|
||||
2
.gitmodules
vendored
@@ -1,3 +1,3 @@
|
||||
[submodule "libft"]
|
||||
path = libft
|
||||
url = git@bitbucket.org:hugogogo/libft.git
|
||||
url = git@bitbucket.org:hugogogo/int_01_libft.git
|
||||
|
||||
65
README.md
@@ -1,12 +1,65 @@
|
||||
# FDF
|
||||
# FDF - fil de fer (french for Wire)
|
||||
---
|
||||
|
||||
quick description
|
||||
This project is an introduction to 3D drawing. It takes a map file and render it with its height. It listen to keyboard events to apply transformations, such as translation, rotations, zoom, and change in altitude factor.
|
||||
|
||||
- [subject here](./fdf_subject.pdf)
|
||||
the input map is a simple text file that looks like this :
|
||||
|
||||
```
|
||||
$> cat -e map_test.fdf
|
||||
0 0 0 0 0$
|
||||
0 0 0 0 0$
|
||||
0 10 0 0 0$
|
||||
0 0 0 0 0$
|
||||
0 0 0 0 0$
|
||||
$>
|
||||
```
|
||||
|
||||
### ressources
|
||||
and the program converts it into a rectangular net, like a landscape with the height equal to the numbers :
|
||||
|
||||
- minilibx : https://harm-smits.github.io/42docs/libs/minilibx
|
||||
- draw a line : https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
|
||||

|
||||
|
||||
we can modify the map to see a new 3D model :
|
||||
|
||||
```
|
||||
$> cat -e map_test.fdf
|
||||
0 0 0 0 0$
|
||||
1 2 3 4 5$
|
||||
0 10 8 0 0$
|
||||
0 0 0 9 0$
|
||||
0 0 0 0 0$
|
||||
$>
|
||||
```
|
||||
|
||||

|
||||
|
||||
# ressources
|
||||
---
|
||||
|
||||
- it is based on a library called minilibx : https://github.com/42Paris/minilibx-linux
|
||||
- equations to transform a 2D drawing into a perspective : https://math.stackexchange.com/questions/2305792/3d-projection-on-a-2d-plane-weak-maths-ressources/2306853#2306853
|
||||
- drawing a line between two points : https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
|
||||
- bits manipulation for colors shifting : https://dev.to/freerangepixels/a-probably-terrible-way-to-render-gradients-1p3n
|
||||
- optimizing events response with debouncing and throttling : https://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function
|
||||
- building images instead of asking the X library to draw each pixel one by one : https://github.com/Gontjarow/MiniLibX/blob/master/docs/mlx-tutorial-create-image.md
|
||||
|
||||
# transformations :
|
||||
---
|
||||
|
||||
**zoom :**
|
||||
|
||||

|
||||
|
||||
**turn :**
|
||||
|
||||

|
||||

|
||||
|
||||
**move :**
|
||||
|
||||

|
||||
|
||||
**altitude factor :**
|
||||
|
||||

|
||||
|
||||
|
||||
BIN
assets/fdf_demo.gif
Normal file
|
After Width: | Height: | Size: 823 KiB |
BIN
assets/fdf_demo_1.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
assets/fdf_demo_2.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
assets/fdf_loop_change_height_50.gif
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
assets/fdf_loop_flying_tube.gif
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
assets/fdf_loop_flying_tube_2.gif
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
assets/fdf_loop_move_down_tube.gif
Normal file
|
After Width: | Height: | Size: 3.6 MiB |
BIN
assets/fdf_loop_move_left_tube.gif
Normal file
|
After Width: | Height: | Size: 3.5 MiB |
BIN
assets/fdf_loop_turn_down_pylone.gif
Normal file
|
After Width: | Height: | Size: 4.3 MiB |
BIN
assets/fdf_loop_turn_left_pyramide.gif
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
assets/fdf_loop_zoom_element.gif
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
assets/fdf_pylone.gif
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
assets/fdf_pyramide.gif
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/fdf_pyramide_loop_square_1.gif
Normal file
|
After Width: | Height: | Size: 19 MiB |
BIN
assets/fdf_pyramide_loop_square_2.gif
Normal file
|
After Width: | Height: | Size: 16 MiB |
BIN
assets/fdf_pyramide_loop_square_combine.gif
Normal file
|
After Width: | Height: | Size: 22 MiB |
BIN
assets/fdf_pyramide_loop_square_zoom.gif
Normal file
|
After Width: | Height: | Size: 5.6 MiB |
BIN
assets/fdf_t2.gif
Normal file
|
After Width: | Height: | Size: 14 MiB |
BIN
builds/fdf.o
BIN
builds/modifs.o
BIN
builds/parse.o
@@ -54,6 +54,9 @@ void draw_grid(t_fdf *fdf, int i, int j);
|
||||
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_pixel(t_fdf *fdf, int x, int y, int color);
|
||||
int is_outise_screen(t_fdf *fdf, int x, int y);
|
||||
int get_primary_color(char primar, int percent);
|
||||
int color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_denominator);
|
||||
|
||||
// keypress.c
|
||||
void keypress_more(int keycode, t_fdf *fdf);
|
||||
@@ -71,26 +74,60 @@ int is_color(char *color);
|
||||
void size_map(t_fdf *fdf, char *raw, int height);
|
||||
int **parse_map(t_fdf *fdf, int fd);
|
||||
|
||||
// steps size for the hight transform with p and o
|
||||
// steps size for the height transform with p and o
|
||||
// must be > 0
|
||||
// 100 is small, 1 is the biggest
|
||||
# define Z_HEIGHT 50
|
||||
# define Z_HEIGHT 10
|
||||
// then define the speed for height transform
|
||||
// must be > 0
|
||||
// 1 is small, 100 is big
|
||||
# define Z_HEIGHT_UP 20
|
||||
# define Z_HEIGHT_DOWN 20
|
||||
|
||||
// color for altitude
|
||||
# define COLOR_START 0xffffff
|
||||
/*
|
||||
# define COLOR_END 0x1423e6 // blue
|
||||
- 50 : pink - blue
|
||||
- elem : purple - green
|
||||
- pylone : brown - purple
|
||||
- pyramide : white - pink
|
||||
- semitube : green - pink
|
||||
- t2 : white - green
|
||||
- test : white - pink
|
||||
*/
|
||||
// color for altitude
|
||||
# define COLOR_START 0xffffff // white
|
||||
/*
|
||||
# define COLOR_START 0xf263a6 // pink
|
||||
# define COLOR_START 0xa263f6 // purple
|
||||
# define COLOR_START 0x1423e6 // blue
|
||||
# define COLOR_START 0x877264 // brown
|
||||
# define COLOR_START 0x00d700 // green
|
||||
*/
|
||||
/*
|
||||
# define COLOR_END 0x877264 // brown
|
||||
# define COLOR_END 0x1423e6 // blue
|
||||
# define COLOR_END 0xf263a6 // pink
|
||||
# define COLOR_END 0xffffff // white
|
||||
# define COLOR_END 0x00d700 // green
|
||||
*/
|
||||
# define COLOR_END 0xa263f6 // purple
|
||||
|
||||
// zoom change for each keypress
|
||||
# define ZOOM 1
|
||||
|
||||
// degree rotation for each keypress
|
||||
# define ROT 3
|
||||
|
||||
// pixels deplacement for each keypress
|
||||
# define MOVE 10
|
||||
|
||||
// minimum time in milliseconds between two keypress
|
||||
# define DEBOUNCE_TIME 40
|
||||
# define DEBOUNCE_TIME 50
|
||||
|
||||
# define ESCAPE 65307
|
||||
# define ESCAPE 65307
|
||||
# define UP 65362
|
||||
# define DOWN 65364
|
||||
# define LEFT 65361
|
||||
# define RIGHT 65363
|
||||
# define RIGHT 65363
|
||||
# define A 97
|
||||
# define B 98
|
||||
# define C 99
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
0 0 0 0 0 0 0 0 0 0
|
||||
0 10 10 10 10 10 10 10 10 0
|
||||
0 10 20 15 12 15 17 20 10 0
|
||||
0 10 15 10 12 15 15 15 10 0
|
||||
0 5 15 10 12 15 15 13 10 0
|
||||
0 5 10 5 7 12 12 12 10 0
|
||||
0 8 8 10 10 10 10 10 10 0
|
||||
0 8 10 10 12 15 17 20 10 0
|
||||
0 8 10 10 12 15 15 15 10 0
|
||||
0 5 10 10 12 15 15 13 10 0
|
||||
0 5 8 5 7 12 12 12 10 0
|
||||
0 5 7 1 2 7 5 5 7 0
|
||||
0 3 0 0 1 2 2 2 5 0
|
||||
0 1 0 0 0 0 0 0 3 0
|
||||
|
||||
156
maps_2/semi_tube.fdf
Normal file
@@ -0,0 +1,156 @@
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
25 21 18 16 15 14 13 12 12 11 10 10 9 8 8 7 7 6 6 6 5 5 5 4 4 4 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 10 10 11 12 12 13 14 15 16 18 21 25
|
||||
5
maps_2/test.fdf
Normal file
@@ -0,0 +1,5 @@
|
||||
0 0 0 0 0
|
||||
0 0 0 0 0
|
||||
0 10 0 0 0
|
||||
0 0 0 0 0
|
||||
0 0 0 0 0
|
||||
10
notes.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# FDF
|
||||
|
||||
- [subject here](./fdf_subject.pdf)
|
||||
|
||||
### ressources
|
||||
|
||||
- minilibx : https://harm-smits.github.io/42docs/libs/minilibx
|
||||
- draw a line : https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
|
||||
|
||||
|
||||
@@ -32,16 +32,44 @@ void draw_grid(t_fdf *fdf, int i, int j)
|
||||
if (i + 1 < fdf->map_width)
|
||||
point_end = new_coordinates(fdf, i + 1, j);
|
||||
draw_lines(fdf, point_start, point_end);
|
||||
free(point_end);
|
||||
point_end = NULL;
|
||||
if (j + 1 < fdf->map_height)
|
||||
{
|
||||
free(point_end);
|
||||
point_end = new_coordinates(fdf, i, j + 1);
|
||||
}
|
||||
draw_lines(fdf, point_start, point_end);
|
||||
free(point_start);
|
||||
free(point_end);
|
||||
}
|
||||
|
||||
void draw_lines(t_fdf *fdf, int *start, int *end)
|
||||
{
|
||||
int dx;
|
||||
int dy;
|
||||
int i;
|
||||
int j;
|
||||
int percent;
|
||||
|
||||
if (end)
|
||||
{
|
||||
dx = end[0] - start[0];
|
||||
dy = end[1] - start[1];
|
||||
i = 0;
|
||||
j = 0;
|
||||
while (ft_abs(i) <= ft_abs(dx) && ft_abs(j) <= ft_abs(dy))
|
||||
{
|
||||
if (!is_outise_screen(fdf, start[0] + i, start[1] + j))
|
||||
{
|
||||
percent = color_percent(fdf, start, end, ft_abs(i) + ft_abs(j), ft_abs(dx) + ft_abs(dy));
|
||||
draw_color_pixel(fdf, start[0] + i, start[1] + j, percent);
|
||||
}
|
||||
if (!ft_abs(dx) || ft_abs(j) < ft_abs(i * dy / dx))
|
||||
j += ft_sign(dy);
|
||||
else
|
||||
i += ft_sign(dx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// return the position of the point p
|
||||
// in percentage of the total height of the map :
|
||||
// z_min---start---point---end----z_max
|
||||
@@ -59,7 +87,8 @@ void draw_grid(t_fdf *fdf, int i, int j)
|
||||
// - 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 color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_denominator)
|
||||
{
|
||||
int z_total;
|
||||
int start;
|
||||
int line;
|
||||
@@ -88,30 +117,18 @@ int color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_d
|
||||
return (percent);
|
||||
}
|
||||
|
||||
void draw_lines(t_fdf *fdf, int *start, int *end)
|
||||
void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int percent)
|
||||
{
|
||||
int dx;
|
||||
int dy;
|
||||
int i;
|
||||
int j;
|
||||
int percent;
|
||||
int color_r;
|
||||
int color_g;
|
||||
int color_b;
|
||||
int color;
|
||||
|
||||
if (end)
|
||||
{
|
||||
dx = end[0] - start[0];
|
||||
dy = end[1] - start[1];
|
||||
i = 0;
|
||||
j = 0;
|
||||
while (ft_abs(i) <= ft_abs(dx) && ft_abs(j) <= ft_abs(dy))
|
||||
{
|
||||
percent = color_percent(fdf, start, end, ft_abs(i) + ft_abs(j), ft_abs(dx) + ft_abs(dy));
|
||||
draw_color_pixel(fdf, start[0] + i, start[1] + j, percent);
|
||||
if (!ft_abs(dx) || ft_abs(j) < ft_abs(i * dy / dx))
|
||||
j += ft_sign(dy);
|
||||
else
|
||||
i += ft_sign(dx);
|
||||
}
|
||||
}
|
||||
color_r = get_primary_color('r', percent);
|
||||
color_g = get_primary_color('g', percent);
|
||||
color_b = get_primary_color('b', percent);
|
||||
color = (color_r << 16) + (color_g << 8) + color_b;
|
||||
draw_pixel(fdf, new_x, new_y, color);
|
||||
}
|
||||
|
||||
int get_primary_color(char primar, int percent)
|
||||
@@ -136,30 +153,24 @@ int get_primary_color(char primar, int percent)
|
||||
return (new_primary_color);
|
||||
}
|
||||
|
||||
void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int percent)
|
||||
{
|
||||
int color_r;
|
||||
int color_g;
|
||||
int color_b;
|
||||
int color;
|
||||
|
||||
color_r = get_primary_color('r', percent);
|
||||
color_g = get_primary_color('g', percent);
|
||||
color_b = get_primary_color('b', percent);
|
||||
color = (color_r << 16) + (color_g << 8) + color_b;
|
||||
draw_pixel(fdf, new_x, new_y, color);
|
||||
}
|
||||
|
||||
void draw_pixel(t_fdf *fdf, int x, int y, int color)
|
||||
{
|
||||
int position;
|
||||
|
||||
if (is_outise_screen(fdf, x, y))
|
||||
return ;
|
||||
position = y * fdf->img_sizel + x * fdf->img_bpp / 8;
|
||||
*(unsigned int *)(fdf->img_addr + position) = color;
|
||||
}
|
||||
|
||||
int is_outise_screen(t_fdf *fdf, int x, int y)
|
||||
{
|
||||
int xmax;
|
||||
int ymax;
|
||||
|
||||
xmax = fdf->img_sizel / (fdf->img_bpp / 8);
|
||||
ymax = fdf->img_size_y;
|
||||
if (x < 0 || y < 0 || x > xmax || y > ymax)
|
||||
return ;
|
||||
position = y * fdf->img_sizel + x * fdf->img_bpp / 8;
|
||||
*(unsigned int *)(fdf->img_addr + position) = color;
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -55,8 +55,8 @@ void init_fdf(t_fdf *fdf)
|
||||
{
|
||||
struct timeval current_time;
|
||||
|
||||
fdf->win_size_x = 700;
|
||||
fdf->win_size_y = 700;
|
||||
fdf->win_size_x = 902;
|
||||
fdf->win_size_y = 913;
|
||||
fdf->img_size_x = fdf->win_size_x;
|
||||
fdf->img_size_y = fdf->win_size_y;
|
||||
init_offset(fdf);
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
void keypress_more(int keycode, t_fdf *fdf)
|
||||
{
|
||||
if (keycode == A)
|
||||
fdf->zoom += 1;
|
||||
fdf->zoom += ZOOM;
|
||||
else if (keycode == W)
|
||||
fdf->zoom -= 1;
|
||||
fdf->zoom -= ZOOM;
|
||||
else if (keycode == U)
|
||||
{
|
||||
fdf->rot_x = 0;
|
||||
@@ -28,10 +28,9 @@ void keypress_more(int keycode, t_fdf *fdf)
|
||||
fdf->zoom = 0;
|
||||
}
|
||||
else if (keycode == O)
|
||||
fdf->altitude++;
|
||||
fdf->altitude += Z_HEIGHT_UP;
|
||||
else if (keycode == P)
|
||||
//if (fdf->altitude > 0)
|
||||
fdf->altitude--;
|
||||
fdf->altitude -= Z_HEIGHT_DOWN;
|
||||
}
|
||||
|
||||
int should_ignore_keypress(const struct timeval *current_time, t_fdf *fdf)
|
||||
@@ -44,21 +43,6 @@ int should_ignore_keypress(const struct timeval *current_time, t_fdf *fdf)
|
||||
last_milliseconds = (fdf->last_keypress_time.tv_sec % 1000) * 1000 + fdf->last_keypress_time.tv_usec / 1000;
|
||||
is_less = (current_milliseconds - last_milliseconds) < DEBOUNCE_TIME;
|
||||
|
||||
/*
|
||||
[1 705 151 587 ,905 277,49579540-1000000]
|
||||
1 705 151 587 000
|
||||
1 705 151 587 905
|
||||
1 705 151 587 % 1000 = 587
|
||||
587 * 1000 + 905 277 / 1000 = 587 000 + 905 = 587905
|
||||
|
||||
[836 763,836 066]
|
||||
ft_putchar('[');
|
||||
ft_putnbr(current_milliseconds);
|
||||
ft_putchar(',');
|
||||
ft_putnbr(last_milliseconds);
|
||||
ft_putchar(']');
|
||||
*/
|
||||
|
||||
if (!is_less)
|
||||
fdf->last_keypress_time = *current_time;
|
||||
return is_less;
|
||||
@@ -82,21 +66,21 @@ int keypress(int keycode, t_fdf *fdf)
|
||||
if (keycode == ESCAPE)
|
||||
shut_down(fdf);
|
||||
else if (keycode == LEFT)
|
||||
fdf->rot_x += 1;
|
||||
fdf->rot_x += ROT;
|
||||
else if (keycode == RIGHT)
|
||||
fdf->rot_x -= 1;
|
||||
fdf->rot_x -= ROT;
|
||||
else if (keycode == UP)
|
||||
fdf->rot_y += 1;
|
||||
fdf->rot_y += ROT;
|
||||
else if (keycode == DOWN)
|
||||
fdf->rot_y -= 1;
|
||||
fdf->rot_y -= ROT;
|
||||
else if (keycode == Q)
|
||||
fdf->mov_x -= 6;
|
||||
fdf->mov_x -= MOVE;
|
||||
else if (keycode == D)
|
||||
fdf->mov_x += 6;
|
||||
fdf->mov_x += MOVE;
|
||||
else if (keycode == Z)
|
||||
fdf->mov_y -= 6;
|
||||
fdf->mov_y -= MOVE;
|
||||
else if (keycode == S)
|
||||
fdf->mov_y += 6;
|
||||
fdf->mov_y += MOVE;
|
||||
else
|
||||
keypress_more(keycode, fdf);
|
||||
draw_image(fdf);
|
||||
|
||||