From bec53b64843b67a3a952f21ceab9003fc7563e79 Mon Sep 17 00:00:00 2001 From: Angel Ortigosa Perez Date: Sun, 25 Jan 2026 15:58:40 +0100 Subject: [PATCH] Wall orientation and see through wall --- Makefile | 0 assets/maps/map.cub | 14 +++---- assets/maps/map2.cub | 8 ++-- assets/textures/backRoom3.png | Bin assets/textures/forest.png | Bin 0 -> 11299 bytes assets/textures/hola.png | Bin 0 -> 5293 bytes includes/cub3d.h | 11 +++--- lib/ft_printf/Makefile | 0 lib/ft_printf/ft_basic.c | 0 lib/ft_printf/ft_hexadecimal.c | 0 lib/ft_printf/ft_pointer.c | 0 lib/ft_printf/ft_printf.c | 0 lib/ft_printf/ft_printf.h | 0 lib/gnl/Makefile | 0 lib/gnl/get_next_line.c | 0 lib/gnl/get_next_line.h | 0 lib/gnl/get_next_line_utils.c | 0 lib/libft/Makefile | 0 lib/libft/ft_array.c | 0 lib/libft/ft_atof.c | 0 lib/libft/ft_atoi.c | 0 lib/libft/ft_bzero.c | 0 lib/libft/ft_calloc.c | 0 lib/libft/ft_iabs.c | 0 lib/libft/ft_isalnum.c | 0 lib/libft/ft_isalpha.c | 0 lib/libft/ft_isascii.c | 0 lib/libft/ft_isdigit.c | 0 lib/libft/ft_isprint.c | 0 lib/libft/ft_issign.c | 0 lib/libft/ft_isspace.c | 0 lib/libft/ft_itoa.c | 0 lib/libft/ft_itoa_base.c | 0 lib/libft/ft_lstadd_back_bonus.c | 0 lib/libft/ft_lstadd_front_bonus.c | 0 lib/libft/ft_lstclear_bonus.c | 0 lib/libft/ft_lstdelone_bonus.c | 0 lib/libft/ft_lstiter_bonus.c | 0 lib/libft/ft_lstlast_bonus.c | 0 lib/libft/ft_lstmap_bonus.c | 0 lib/libft/ft_lstnew_bonus.c | 0 lib/libft/ft_lstsize_bonus.c | 0 lib/libft/ft_ltoa.c | 0 lib/libft/ft_memchr.c | 0 lib/libft/ft_memcmp.c | 0 lib/libft/ft_memcpy.c | 0 lib/libft/ft_memfree.c | 0 lib/libft/ft_memfree_all.c | 0 lib/libft/ft_memmove.c | 0 lib/libft/ft_memset.c | 0 lib/libft/ft_putchar_fd.c | 0 lib/libft/ft_putendl_fd.c | 0 lib/libft/ft_putnbr_fd.c | 0 lib/libft/ft_putstr_fd.c | 0 lib/libft/ft_split.c | 0 lib/libft/ft_strchr.c | 0 lib/libft/ft_strcmp.c | 0 lib/libft/ft_strdup.c | 0 lib/libft/ft_striteri.c | 0 lib/libft/ft_strjoin.c | 0 lib/libft/ft_strlcat.c | 0 lib/libft/ft_strlcpy.c | 0 lib/libft/ft_strlen.c | 0 lib/libft/ft_strmapi.c | 0 lib/libft/ft_strncmp.c | 0 lib/libft/ft_strnstr.c | 0 lib/libft/ft_strrchr.c | 0 lib/libft/ft_strtrim.c | 0 lib/libft/ft_substr.c | 0 lib/libft/ft_tolower.c | 0 lib/libft/ft_toupper.c | 0 lib/libft/libft.h | 0 lib/mlx/.editorconfig | 0 lib/mlx/.gitattributes | 0 lib/mlx/.github/ISSUE_TEMPLATE/bug_report.md | 0 .../.github/ISSUE_TEMPLATE/feature_request.md | 0 lib/mlx/.github/workflows/ci.yml | 0 lib/mlx/.github/workflows/wasm.yml | 0 lib/mlx/.gitignore | 0 lib/mlx/CMakeLists.txt | 0 lib/mlx/CODE_OF_CONDUCT.md | 0 lib/mlx/CONTRIBUTING.md | 0 lib/mlx/LICENSE | 0 lib/mlx/README.md | 0 lib/mlx/SECURITY.md | 0 lib/mlx/cmake/Findglfw3.cmake | 0 lib/mlx/cmake/LinkGLFW.cmake | 0 lib/mlx/docs/42.md | 0 lib/mlx/docs/Basics.md | 0 lib/mlx/docs/Colors.md | 0 lib/mlx/docs/Functions.md | 0 lib/mlx/docs/Hooks.md | 0 lib/mlx/docs/Images.md | 0 lib/mlx/docs/Input.md | 0 lib/mlx/docs/Shaders.md | 0 lib/mlx/docs/Textures.md | 0 lib/mlx/docs/XPM42.md | 0 lib/mlx/docs/assets/demo.gif | Bin lib/mlx/docs/assets/logo.png | Bin lib/mlx/docs/assets/python.png | Bin lib/mlx/docs/index.md | 0 lib/mlx/ffi/python/.gitignore | 0 lib/mlx/ffi/python/README.md | 0 lib/mlx/ffi/python/example.py | 0 lib/mlx/ffi/python/libmlx.py | 0 lib/mlx/include/KHR/khrplatform.h | 0 lib/mlx/include/MLX42/MLX42.h | 0 lib/mlx/include/MLX42/MLX42_Int.h | 0 lib/mlx/include/glad/glad.h | 0 lib/mlx/include/lodepng/lodepng.h | 0 lib/mlx/lib/glad/glad.c | 0 lib/mlx/lib/png/lodepng.c | 0 lib/mlx/shaders/default.frag | 0 lib/mlx/shaders/default.vert | 0 lib/mlx/src/font/font.h | 0 lib/mlx/src/font/mlx_font.c | 0 lib/mlx/src/mlx_cursor.c | 0 lib/mlx/src/mlx_exit.c | 0 lib/mlx/src/mlx_images.c | 0 lib/mlx/src/mlx_init.c | 0 lib/mlx/src/mlx_keys.c | 0 lib/mlx/src/mlx_loop.c | 0 lib/mlx/src/mlx_monitor.c | 0 lib/mlx/src/mlx_mouse.c | 0 lib/mlx/src/mlx_put_pixel.c | 0 lib/mlx/src/mlx_window.c | 0 lib/mlx/src/textures/mlx_png.c | 0 lib/mlx/src/textures/mlx_texture.c | 0 lib/mlx/src/textures/mlx_xpm42.c | 0 lib/mlx/src/utils/mlx_compare.c | 0 lib/mlx/src/utils/mlx_error.c | 0 lib/mlx/src/utils/mlx_list.c | 0 lib/mlx/src/utils/mlx_utils.c | 0 lib/mlx/tests/CMakeLists.txt | 0 lib/mlx/tests/WindowFixture.hpp | 0 lib/mlx/tests/tests.cpp | 0 lib/mlx/web/README.md | 0 lib/mlx/web/coi-serviceworker.js | 0 lib/mlx/web/demo.js | 0 lib/mlx/web/index.html | 0 src/execution/execution.c | 0 src/execution/movement.c | 35 ++++++++++-------- src/execution/raycasting.c | 2 +- src/execution/render.c | 14 ++++++- src/execution/render2.c | 0 src/free/clean.c | 0 src/free/frees.c | 0 src/main.c | 0 src/map/read_map.c | 4 +- src/map/read_map_utils.c | 4 +- src/map/valid_map.c | 0 src/parsing/lst_textures.c | 0 src/parsing/parsing.c | 0 src/parsing/textures.c | 0 src/parsing/textures_utils.c | 0 155 files changed, 55 insertions(+), 37 deletions(-) mode change 100644 => 100755 Makefile mode change 100644 => 100755 assets/maps/map.cub mode change 100644 => 100755 assets/maps/map2.cub mode change 100644 => 100755 assets/textures/backRoom3.png create mode 100644 assets/textures/forest.png create mode 100755 assets/textures/hola.png mode change 100644 => 100755 includes/cub3d.h mode change 100644 => 100755 lib/ft_printf/Makefile mode change 100644 => 100755 lib/ft_printf/ft_basic.c mode change 100644 => 100755 lib/ft_printf/ft_hexadecimal.c mode change 100644 => 100755 lib/ft_printf/ft_pointer.c mode change 100644 => 100755 lib/ft_printf/ft_printf.c mode change 100644 => 100755 lib/ft_printf/ft_printf.h mode change 100644 => 100755 lib/gnl/Makefile mode change 100644 => 100755 lib/gnl/get_next_line.c mode change 100644 => 100755 lib/gnl/get_next_line.h mode change 100644 => 100755 lib/gnl/get_next_line_utils.c mode change 100644 => 100755 lib/libft/Makefile mode change 100644 => 100755 lib/libft/ft_array.c mode change 100644 => 100755 lib/libft/ft_atof.c mode change 100644 => 100755 lib/libft/ft_atoi.c mode change 100644 => 100755 lib/libft/ft_bzero.c mode change 100644 => 100755 lib/libft/ft_calloc.c mode change 100644 => 100755 lib/libft/ft_iabs.c mode change 100644 => 100755 lib/libft/ft_isalnum.c mode change 100644 => 100755 lib/libft/ft_isalpha.c mode change 100644 => 100755 lib/libft/ft_isascii.c mode change 100644 => 100755 lib/libft/ft_isdigit.c mode change 100644 => 100755 lib/libft/ft_isprint.c mode change 100644 => 100755 lib/libft/ft_issign.c mode change 100644 => 100755 lib/libft/ft_isspace.c mode change 100644 => 100755 lib/libft/ft_itoa.c mode change 100644 => 100755 lib/libft/ft_itoa_base.c mode change 100644 => 100755 lib/libft/ft_lstadd_back_bonus.c mode change 100644 => 100755 lib/libft/ft_lstadd_front_bonus.c mode change 100644 => 100755 lib/libft/ft_lstclear_bonus.c mode change 100644 => 100755 lib/libft/ft_lstdelone_bonus.c mode change 100644 => 100755 lib/libft/ft_lstiter_bonus.c mode change 100644 => 100755 lib/libft/ft_lstlast_bonus.c mode change 100644 => 100755 lib/libft/ft_lstmap_bonus.c mode change 100644 => 100755 lib/libft/ft_lstnew_bonus.c mode change 100644 => 100755 lib/libft/ft_lstsize_bonus.c mode change 100644 => 100755 lib/libft/ft_ltoa.c mode change 100644 => 100755 lib/libft/ft_memchr.c mode change 100644 => 100755 lib/libft/ft_memcmp.c mode change 100644 => 100755 lib/libft/ft_memcpy.c mode change 100644 => 100755 lib/libft/ft_memfree.c mode change 100644 => 100755 lib/libft/ft_memfree_all.c mode change 100644 => 100755 lib/libft/ft_memmove.c mode change 100644 => 100755 lib/libft/ft_memset.c mode change 100644 => 100755 lib/libft/ft_putchar_fd.c mode change 100644 => 100755 lib/libft/ft_putendl_fd.c mode change 100644 => 100755 lib/libft/ft_putnbr_fd.c mode change 100644 => 100755 lib/libft/ft_putstr_fd.c mode change 100644 => 100755 lib/libft/ft_split.c mode change 100644 => 100755 lib/libft/ft_strchr.c mode change 100644 => 100755 lib/libft/ft_strcmp.c mode change 100644 => 100755 lib/libft/ft_strdup.c mode change 100644 => 100755 lib/libft/ft_striteri.c mode change 100644 => 100755 lib/libft/ft_strjoin.c mode change 100644 => 100755 lib/libft/ft_strlcat.c mode change 100644 => 100755 lib/libft/ft_strlcpy.c mode change 100644 => 100755 lib/libft/ft_strlen.c mode change 100644 => 100755 lib/libft/ft_strmapi.c mode change 100644 => 100755 lib/libft/ft_strncmp.c mode change 100644 => 100755 lib/libft/ft_strnstr.c mode change 100644 => 100755 lib/libft/ft_strrchr.c mode change 100644 => 100755 lib/libft/ft_strtrim.c mode change 100644 => 100755 lib/libft/ft_substr.c mode change 100644 => 100755 lib/libft/ft_tolower.c mode change 100644 => 100755 lib/libft/ft_toupper.c mode change 100644 => 100755 lib/libft/libft.h mode change 100644 => 100755 lib/mlx/.editorconfig mode change 100644 => 100755 lib/mlx/.gitattributes mode change 100644 => 100755 lib/mlx/.github/ISSUE_TEMPLATE/bug_report.md mode change 100644 => 100755 lib/mlx/.github/ISSUE_TEMPLATE/feature_request.md mode change 100644 => 100755 lib/mlx/.github/workflows/ci.yml mode change 100644 => 100755 lib/mlx/.github/workflows/wasm.yml mode change 100644 => 100755 lib/mlx/.gitignore mode change 100644 => 100755 lib/mlx/CMakeLists.txt mode change 100644 => 100755 lib/mlx/CODE_OF_CONDUCT.md mode change 100644 => 100755 lib/mlx/CONTRIBUTING.md mode change 100644 => 100755 lib/mlx/LICENSE mode change 100644 => 100755 lib/mlx/README.md mode change 100644 => 100755 lib/mlx/SECURITY.md mode change 100644 => 100755 lib/mlx/cmake/Findglfw3.cmake mode change 100644 => 100755 lib/mlx/cmake/LinkGLFW.cmake mode change 100644 => 100755 lib/mlx/docs/42.md mode change 100644 => 100755 lib/mlx/docs/Basics.md mode change 100644 => 100755 lib/mlx/docs/Colors.md mode change 100644 => 100755 lib/mlx/docs/Functions.md mode change 100644 => 100755 lib/mlx/docs/Hooks.md mode change 100644 => 100755 lib/mlx/docs/Images.md mode change 100644 => 100755 lib/mlx/docs/Input.md mode change 100644 => 100755 lib/mlx/docs/Shaders.md mode change 100644 => 100755 lib/mlx/docs/Textures.md mode change 100644 => 100755 lib/mlx/docs/XPM42.md mode change 100644 => 100755 lib/mlx/docs/assets/demo.gif mode change 100644 => 100755 lib/mlx/docs/assets/logo.png mode change 100644 => 100755 lib/mlx/docs/assets/python.png mode change 100644 => 100755 lib/mlx/docs/index.md mode change 100644 => 100755 lib/mlx/ffi/python/.gitignore mode change 100644 => 100755 lib/mlx/ffi/python/README.md mode change 100644 => 100755 lib/mlx/ffi/python/example.py mode change 100644 => 100755 lib/mlx/ffi/python/libmlx.py mode change 100644 => 100755 lib/mlx/include/KHR/khrplatform.h mode change 100644 => 100755 lib/mlx/include/MLX42/MLX42.h mode change 100644 => 100755 lib/mlx/include/MLX42/MLX42_Int.h mode change 100644 => 100755 lib/mlx/include/glad/glad.h mode change 100644 => 100755 lib/mlx/include/lodepng/lodepng.h mode change 100644 => 100755 lib/mlx/lib/glad/glad.c mode change 100644 => 100755 lib/mlx/lib/png/lodepng.c mode change 100644 => 100755 lib/mlx/shaders/default.frag mode change 100644 => 100755 lib/mlx/shaders/default.vert mode change 100644 => 100755 lib/mlx/src/font/font.h mode change 100644 => 100755 lib/mlx/src/font/mlx_font.c mode change 100644 => 100755 lib/mlx/src/mlx_cursor.c mode change 100644 => 100755 lib/mlx/src/mlx_exit.c mode change 100644 => 100755 lib/mlx/src/mlx_images.c mode change 100644 => 100755 lib/mlx/src/mlx_init.c mode change 100644 => 100755 lib/mlx/src/mlx_keys.c mode change 100644 => 100755 lib/mlx/src/mlx_loop.c mode change 100644 => 100755 lib/mlx/src/mlx_monitor.c mode change 100644 => 100755 lib/mlx/src/mlx_mouse.c mode change 100644 => 100755 lib/mlx/src/mlx_put_pixel.c mode change 100644 => 100755 lib/mlx/src/mlx_window.c mode change 100644 => 100755 lib/mlx/src/textures/mlx_png.c mode change 100644 => 100755 lib/mlx/src/textures/mlx_texture.c mode change 100644 => 100755 lib/mlx/src/textures/mlx_xpm42.c mode change 100644 => 100755 lib/mlx/src/utils/mlx_compare.c mode change 100644 => 100755 lib/mlx/src/utils/mlx_error.c mode change 100644 => 100755 lib/mlx/src/utils/mlx_list.c mode change 100644 => 100755 lib/mlx/src/utils/mlx_utils.c mode change 100644 => 100755 lib/mlx/tests/CMakeLists.txt mode change 100644 => 100755 lib/mlx/tests/WindowFixture.hpp mode change 100644 => 100755 lib/mlx/tests/tests.cpp mode change 100644 => 100755 lib/mlx/web/README.md mode change 100644 => 100755 lib/mlx/web/coi-serviceworker.js mode change 100644 => 100755 lib/mlx/web/demo.js mode change 100644 => 100755 lib/mlx/web/index.html mode change 100644 => 100755 src/execution/execution.c mode change 100644 => 100755 src/execution/movement.c mode change 100644 => 100755 src/execution/raycasting.c mode change 100644 => 100755 src/execution/render.c mode change 100644 => 100755 src/execution/render2.c mode change 100644 => 100755 src/free/clean.c mode change 100644 => 100755 src/free/frees.c mode change 100644 => 100755 src/main.c mode change 100644 => 100755 src/map/read_map.c mode change 100644 => 100755 src/map/read_map_utils.c mode change 100644 => 100755 src/map/valid_map.c mode change 100644 => 100755 src/parsing/lst_textures.c mode change 100644 => 100755 src/parsing/parsing.c mode change 100644 => 100755 src/parsing/textures.c mode change 100644 => 100755 src/parsing/textures_utils.c diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 diff --git a/assets/maps/map.cub b/assets/maps/map.cub old mode 100644 new mode 100755 index d5dfcbb..88c7da2 --- a/assets/maps/map.cub +++ b/assets/maps/map.cub @@ -1,14 +1,14 @@ -NO assets/textures/backRoom3.png -SO assets/textures/backRoom3.png -WE assets/textures/backRoom3.png -EA assets/textures/backRoom3.png +NO assets/textures/forest.png +SO assets/textures/forest.png +WE assets/textures/forest.png +EA assets/textures/forest.png C 164,157,79 F 30,55,55 -11111111111111111111111111111 -10000000001100000000000000001 -10110000011100000010000010001 +11111111111111111111111111111 111 +10000000001100000000000000001 101 +10110000011100000010000010001 111 10010000000000000000000010001 10110000011100000010000010001 10000000001100000111011110001 diff --git a/assets/maps/map2.cub b/assets/maps/map2.cub old mode 100644 new mode 100755 index cdb1b1d..0cd443c --- a/assets/maps/map2.cub +++ b/assets/maps/map2.cub @@ -1,15 +1,15 @@ NO assets/textures/backRoom3.png SO assets/textures/backRoom3.png WE assets/textures/backRoom3.png -EAS assets/textures/backRoom3.png +EA assets/textures/backRoom3.png C 164,157,79 F 30,55,55 - 11111111111111111111111111 + 111111111111111111111111111 100000000011100000000000001 - 10110000011 110000000000001 - 100100000001000000N0000011 + 10110000011 110000000000N01 + 10010000000100000000000011 111111111011000001110000000000001 100000000011000001110111110111111 11110111111111011100000010001 diff --git a/assets/textures/backRoom3.png b/assets/textures/backRoom3.png old mode 100644 new mode 100755 diff --git a/assets/textures/forest.png b/assets/textures/forest.png new file mode 100644 index 0000000000000000000000000000000000000000..1a140fca5a6c215fd70f3f689dd6da998f174081 GIT binary patch literal 11299 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 literal 0 HcmV?d00001 diff --git a/includes/cub3d.h b/includes/cub3d.h old mode 100644 new mode 100755 index 615c05a..421db64 --- a/includes/cub3d.h +++ b/includes/cub3d.h @@ -6,7 +6,7 @@ /* By: aortigos ply->plyr_x + move_x); - new_y = roundf(mlx->ply->plyr_y + move_y); - map_grid_x = (new_x / WALL_SIZE); - map_grid_y = (new_y / WALL_SIZE); - if (mlx->dt->sq_map[map_grid_y][map_grid_x] != '1' - && (mlx->dt->sq_map[map_grid_y][mlx->ply->plyr_x / WALL_SIZE] != '1' - && mlx->dt->sq_map[mlx->ply->plyr_y - / WALL_SIZE][map_grid_x] != '1')) - { + new_x = mlx->ply->plyr_x + move_x; + new_y = mlx->ply->plyr_y + move_y; + + /* X axis */ + grid_x = (int)((new_x + copysign(COLLISION_MARGIN, move_x)) / WALL_SIZE); + grid_y = (int)(mlx->ply->plyr_y / WALL_SIZE); + + if (mlx->dt->sq_map[grid_y][grid_x] != '1') mlx->ply->plyr_x = new_x; + + /* Y axis */ + grid_x = (int)(mlx->ply->plyr_x / WALL_SIZE); + grid_y = (int)((new_y + copysign(COLLISION_MARGIN, move_y)) / WALL_SIZE); + + if (mlx->dt->sq_map[grid_y][grid_x] != '1') mlx->ply->plyr_y = new_y; - } } + void cub_hook(t_mlx *mlx, double move_x, double move_y) { if (mlx->ply->rot == 1) diff --git a/src/execution/raycasting.c b/src/execution/raycasting.c old mode 100644 new mode 100755 index dad1090..a722503 --- a/src/execution/raycasting.c +++ b/src/execution/raycasting.c @@ -6,7 +6,7 @@ /* By: aortigos ray->flag == 1) + { x_o = (int)fmodf((mlx->ray->horiz_x * (texture->width / WALL_SIZE)), texture->width); + // Lets invert south wall so we can read text + if (mlx->ray->ray_ngl > 0 && mlx->ray->ray_ngl < M_PI) + x_o = texture->width - x_o - 1; + } else + { x_o = (int)fmodf((mlx->ray->vert_y * (texture->width / WALL_SIZE)), texture->width); + // Invert also east wall + if (mlx->ray->ray_ngl > M_PI / 2 + && mlx->ray->ray_ngl < 3 * M_PI / 2) + x_o = texture->width - x_o - 1; + } + return (x_o); } diff --git a/src/execution/render2.c b/src/execution/render2.c old mode 100644 new mode 100755 diff --git a/src/free/clean.c b/src/free/clean.c old mode 100644 new mode 100755 diff --git a/src/free/frees.c b/src/free/frees.c old mode 100644 new mode 100755 diff --git a/src/main.c b/src/main.c old mode 100644 new mode 100755 diff --git a/src/map/read_map.c b/src/map/read_map.c old mode 100644 new mode 100755 index 5aa839c..ba25e10 --- a/src/map/read_map.c +++ b/src/map/read_map.c @@ -6,7 +6,7 @@ /* By: aortigos ture, map->line, map->fd); exit(1); } diff --git a/src/map/read_map_utils.c b/src/map/read_map_utils.c old mode 100644 new mode 100755 index faf4528..42f293a --- a/src/map/read_map_utils.c +++ b/src/map/read_map_utils.c @@ -6,7 +6,7 @@ /* By: aortigos 1) - return (ft_putstr_fd("one X\n", 2), 0); + return (ft_putstr_fd("Invalid map\n", 2), 0); if (flag == 0) return (ft_putstr_fd("no position map\n", 2), 0); return (1); diff --git a/src/map/valid_map.c b/src/map/valid_map.c old mode 100644 new mode 100755 diff --git a/src/parsing/lst_textures.c b/src/parsing/lst_textures.c old mode 100644 new mode 100755 diff --git a/src/parsing/parsing.c b/src/parsing/parsing.c old mode 100644 new mode 100755 diff --git a/src/parsing/textures.c b/src/parsing/textures.c old mode 100644 new mode 100755 diff --git a/src/parsing/textures_utils.c b/src/parsing/textures_utils.c old mode 100644 new mode 100755