From 6e963545c94d0613f49615d575304a0ad6e0d434 Mon Sep 17 00:00:00 2001 From: H3XploR Date: Tue, 18 Feb 2025 17:20:28 +0100 Subject: [PATCH] update .rt et norme --- config.rt => cross_cylindre_plane_sphere.rt | 11 +- ft_atof.c | 18 ++- miniRT | Bin 0 -> 352984 bytes one_sphere_plane.rt | 8 +- parsing_cylinder.c | 4 +- print.c | 56 +------ print_next.c | 62 +++++++ tags | 171 ++++++++++---------- trace.c | 8 +- 9 files changed, 172 insertions(+), 166 deletions(-) rename config.rt => cross_cylindre_plane_sphere.rt (64%) create mode 100755 miniRT create mode 100644 print_next.c diff --git a/config.rt b/cross_cylindre_plane_sphere.rt similarity index 64% rename from config.rt rename to cross_cylindre_plane_sphere.rt index 277dac3..857b85e 100644 --- a/config.rt +++ b/cross_cylindre_plane_sphere.rt @@ -6,28 +6,21 @@ # By: yantoine +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2025/02/13 19:27:37 by yantoine #+# #+# # -# Updated: 2025/02/17 23:45:52 by yantoine ### ########.fr # +# Updated: 2025/02/18 17:19:31 by yantoine ### ########.fr # # # # **************************************************************************** # -# Ambient lighting (ratio et couleur) A 0 255,255,255 -# Camera : position à (0,0,20) et orientée vers (0,0,-1) avec un FOV de 70° -C 0,0,0 0,0,1 70 +C 10,20,-60 0,0,1 70 -# Light : source lumineuse forte placée au-dessus de la scène L 11,40,-30 1 255,255,255 -# Sphere : une sphère rouge centrée à (0,0,0) avec un diamètre de 10 sp 0,0,0 10 255,0,0 sp 10,10,10 10 0,0,100 -# Plane : un plan vert servant de sol, passant par (0,-5,0) et avec une normale vers le haut pl 0,-5,0 0,1,0 100,55,0 -# Cylinder : un cylindre bleu placé à (10,0,0), avec un axe vertical (0,1,0), -# un diamètre de 8 et une hauteur de 20 cy 10,0,0 0.5,0,0 8 20 0,0,255 cy 10,0,0 0,1,0 8 20 0,0,255 diff --git a/ft_atof.c b/ft_atof.c index 011dda8..98b5ef1 100644 --- a/ft_atof.c +++ b/ft_atof.c @@ -6,12 +6,22 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/17 21:19:17 by yantoine #+# #+# */ -/* Updated: 2025/02/17 21:20:13 by yantoine ### ########.fr */ +/* Updated: 2025/02/18 17:14:00 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ #include "miniRT.h" +inline static char *check_sign(char *str, int *sign) +{ + if (*str == '-') + { + *sign = -1; + str++; + } + return (str); +} + float ft_atof(char *str) { float res; @@ -21,11 +31,7 @@ float ft_atof(char *str) res = 0; dec = 0; sign = 1; - if (*str == '-') - { - sign = -1; - str++; - } + str = check_sign(str, &sign); while (*str >= '0' && *str <= '9') { res = res * 10 + *str - '0'; diff --git a/miniRT b/miniRT new file mode 100755 index 0000000000000000000000000000000000000000..4a728e7a0c4e8ea9f772c96afd5db0ba634b1b95 GIT binary patch literal 352984 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 J{3u)ge*oCA$)o@P literal 0 HcmV?d00001 diff --git a/one_sphere_plane.rt b/one_sphere_plane.rt index c0f3e99..7edce44 100644 --- a/one_sphere_plane.rt +++ b/one_sphere_plane.rt @@ -6,22 +6,18 @@ # By: yantoine +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2025/02/13 19:27:37 by yantoine #+# #+# # -# Updated: 2025/02/17 23:48:57 by yantoine ### ########.fr # +# Updated: 2025/02/18 17:17:07 by yantoine ### ########.fr # # # # **************************************************************************** # -# Ambient lighting (ratio et couleur) A 0 255,255,255 -# Camera : position à (0,0,20) et orientée vers (0,0,-1) avec un FOV de 70° -C 0,0,0 0,0,0 70 +C 0,0,0 0,0,-1 70 -# Light : source lumineuse forte placée au-dessus de la scène L 11,40,50 1 255,255,255 sp 0,0,-20 10 0,0,100 -# Plane : un plan vert servant de sol, passant par (0,-5,0) et avec une normale vers le haut pl 0,-5,0 0,1,0 100,55,0 diff --git a/parsing_cylinder.c b/parsing_cylinder.c index 582e215..2d28754 100644 --- a/parsing_cylinder.c +++ b/parsing_cylinder.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/15 19:54:13 by yantoine #+# #+# */ -/* Updated: 2025/02/17 22:02:43 by yantoine ### ########.fr */ +/* Updated: 2025/02/18 17:14:45 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -97,6 +97,8 @@ float intersectCylinder(Ray ray, Cylinder cy, t_vec3 *hitNormal) }*/ t_scene parsing_cylindre(t_scene scene) { + char **tokens; + tokens = get_tokens_secure(scene, scene.numCylinders, MAX_CYLINDERS, 6); scene.token_if_exit = tokens; scene.cylinders[scene.numCylinders].center = parse_vector(tokens[1], scene); diff --git a/print.c b/print.c index 7c1ca31..c92eedd 100644 --- a/print.c +++ b/print.c @@ -6,60 +6,12 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/17 23:16:21 by yantoine #+# #+# */ -/* Updated: 2025/02/17 23:35:54 by yantoine ### ########.fr */ +/* Updated: 2025/02/18 17:03:05 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ #include "miniRT.h" -void print_vec3(t_vec3 vec) -{ - printf("(x: %.2f, y: %.2f, z: %.2f)", vec.x, vec.y, vec.z); -} - -void print_ray(t_ray ray) -{ - printf("Rayon d'origine : "); - print_vec3(ray.origin); - printf("\nDirection : "); - print_vec3(ray.dir); - printf("\n"); -} - -void print_sphere(t_sphere sphere) -{ - printf("Centre : "); - print_vec3(sphere.center); - printf("\nRayon : %.2f", sphere.radius); - printf("\nCouleur : "); - print_vec3(sphere.color); - printf("\n"); -} - -void print_plane(t_plane plane) -{ - printf("Point : "); - print_vec3(plane.point); - printf("\nNormale : "); - print_vec3(plane.normal); - printf("\nCouleur : "); - print_vec3(plane.color); - printf("\n"); -} - -void print_cylinder(t_cylinder cyl) -{ - printf("Centre : "); - print_vec3(cyl.center); - printf("\nAxe : "); - print_vec3(cyl.axis); - printf("\nRayon : %.2f", cyl.radius); - printf("\nHauteur : %.2f", cyl.height); - printf("\nCouleur : "); - print_vec3(cyl.color); - printf("\n"); -} - void print_light(t_light light) { printf("Position : "); @@ -100,16 +52,13 @@ void print_scene(t_scene scene) i = 0; printf("=== SCENE ===\n"); - // Ambiance printf("\n--- Ambiance ---\n"); print_ambient(scene.ambient); - // Caméra if (scene.numCamera > 0) { printf("\n--- Caméra ---\n"); print_camera(scene.camera); } - // Sphères printf("\n--- Sphères (%d) ---\n", scene.numSpheres); i = 0; while (i < scene.numSpheres) @@ -118,7 +67,6 @@ void print_scene(t_scene scene) print_sphere(scene.spheres[i]); i++; } - // Plans printf("\n--- Plans (%d) ---\n", scene.numPlanes); i = 0; while (i < scene.numPlanes) @@ -127,7 +75,6 @@ void print_scene(t_scene scene) print_plane(scene.planes[i]); i++; } - // Cylindres printf("\n--- Cylindres (%d) ---\n", scene.numCylinders); i = 0; while (i < scene.numCylinders) @@ -136,7 +83,6 @@ void print_scene(t_scene scene) print_cylinder(scene.cylinders[i]); i++; } - // Lumières printf("\n--- Lumières (%d) ---\n", scene.numLights); i = 0; while (i < scene.numLights) diff --git a/print_next.c b/print_next.c new file mode 100644 index 0000000..60a5b33 --- /dev/null +++ b/print_next.c @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* print_next.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: yantoine +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/18 17:02:32 by yantoine #+# #+# */ +/* Updated: 2025/02/18 17:02:42 by yantoine ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "miniRT.h" + +void print_vec3(t_vec3 vec) +{ + printf("(x: %.2f, y: %.2f, z: %.2f)", vec.x, vec.y, vec.z); +} + +void print_ray(t_ray ray) +{ + printf("Rayon d'origine : "); + print_vec3(ray.origin); + printf("\nDirection : "); + print_vec3(ray.dir); + printf("\n"); +} + +void print_sphere(t_sphere sphere) +{ + printf("Centre : "); + print_vec3(sphere.center); + printf("\nRayon : %.2f", sphere.radius); + printf("\nCouleur : "); + print_vec3(sphere.color); + printf("\n"); +} + +void print_plane(t_plane plane) +{ + printf("Point : "); + print_vec3(plane.point); + printf("\nNormale : "); + print_vec3(plane.normal); + printf("\nCouleur : "); + print_vec3(plane.color); + printf("\n"); +} + +void print_cylinder(t_cylinder cyl) +{ + printf("Centre : "); + print_vec3(cyl.center); + printf("\nAxe : "); + print_vec3(cyl.axis); + printf("\nRayon : %.2f", cyl.radius); + printf("\nHauteur : %.2f", cyl.height); + printf("\nCouleur : "); + print_vec3(cyl.color); + printf("\n"); +} + diff --git a/tags b/tags index a93b1a7..3c0bb97 100644 --- a/tags +++ b/tags @@ -263,38 +263,39 @@ X-WINDOW EVENTS minilibx-linux/man/man3/mlx_loop.3 /^.SH X-WINDOW EVENTS$/;" s t XPM IMAGES minilibx-linux/man/man1/mlx_new_image.1 /^.SH XPM IMAGES$/;" s title:MiniLibX XPM IMAGES minilibx-linux/man/man3/mlx_new_image.3 /^.SH XPM IMAGES$/;" s title:MiniLibX X_ShmAttach minilibx-linux/mlx_new_image.c /^#define X_ShmAttach /;" d file: -a miniRT.h /^ float a;$/;" m struct:s_calc typeref:typename:float +a miniRT.h /^ float a;$/;" m struct:s_calc typeref:typename:float all libft/Makefile /^all: $(NAME)$/;" t all makefile /^all: $(NAME)$/;" t all minilibx-linux/Makefile /^all : do_configure$/;" t all minilibx-linux/Makefile.mk /^all : $(NAME)$/;" t all minilibx-linux/test/Makefile.mk /^all: $(NAME)$/;" t ambient miniRT.h /^ t_ambient ambient;$/;" m struct:s_scene typeref:typename:t_ambient -aspect miniRT.h /^ float aspect;$/;" m struct:s_calc typeref:typename:float +aspect miniRT.h /^ float aspect;$/;" m struct:s_calc typeref:typename:float at_exit minilibx-linux/test/run_tests.sh /^at_exit() {$/;" f axis miniRT.h /^ t_vec3 axis; \/\/ Axe normalisé$/;" m struct:s_cylinder typeref:typename:t_vec3 -b miniRT.h /^ float b;$/;" m struct:s_calc typeref:typename:float +b miniRT.h /^ float b;$/;" m struct:s_calc typeref:typename:float base libft/libft.h /^ int base;$/;" m struct:s_info typeref:typename:int better_ray_tracer README.md /^# better_ray_tracer/;" c -bpp miniRT.h /^ int bpp;$/;" m struct:s_app typeref:typename:int +bpp miniRT.h /^ int bpp;$/;" m struct:s_app typeref:typename:int bpp minilibx-linux/mlx_int.h /^ int bpp;$/;" m struct:s_img typeref:typename:int bpp1 minilibx-linux/test/main.c /^int bpp1;$/;" v typeref:typename:int bpp2 minilibx-linux/test/main.c /^int bpp2;$/;" v typeref:typename:int bpp3 minilibx-linux/test/main.c /^int bpp3;$/;" v typeref:typename:int bpp4 minilibx-linux/test/main.c /^int bpp4;$/;" v typeref:typename:int brightness miniRT.h /^ float brightness;$/;" m struct:s_light typeref:typename:float -c miniRT.h /^ float c;$/;" m struct:s_calc typeref:typename:float -calcLighting trace.c /^t_vec3 calcLighting(t_vec3 hitPoint, t_vec3 hitNormal, t_vec3 objColor, t_scene scene) {$/;" f typeref:typename:t_vec3 +c miniRT.h /^ float c;$/;" m struct:s_calc typeref:typename:float +calcLighting trace.c /^t_vec3 calcLighting(t_vec3 hitPoint, t_vec3 hitNormal, t_vec3 objColor,$/;" f typeref:typename:t_vec3 camDir miniRT.h /^ t_vec3 camDir;$/;" m struct:s_camera typeref:typename:t_vec3 camPos miniRT.h /^ t_vec3 camPos;$/;" m struct:s_camera typeref:typename:t_vec3 camera miniRT.h /^ t_camera camera;$/;" m struct:s_scene typeref:typename:t_camera center miniRT.h /^ t_vec3 center;$/;" m struct:s_cylinder typeref:typename:t_vec3 center miniRT.h /^ t_vec3 center;$/;" m struct:s_sphere typeref:typename:t_vec3 check minilibx-linux/Makefile.mk /^check: all$/;" t -checkShadowCylinder shadows.c /^static bool checkShadowCylinder(const t_ray shadowRay, float maxT, float epsilon, t_scene scene)/;" f typeref:typename:bool file: -checkShadowPlane shadows.c /^static bool checkShadowPlane(const t_ray shadowRay, float maxT, float epsilon, t_scene scene) {$/;" f typeref:typename:bool file: -checkShadowSphere shadows.c /^static bool checkShadowSphere(const t_ray shadowRay, float maxT, float epsilon, t_scene scene) {$/;" f typeref:typename:bool file: -check_if_max check.c /^void check_if_max(t_scene scene, const int to_test, const int max)$/;" f typeref:typename:void +checkShadowCylinder shadows.c /^static bool checkShadowCylinder(const t_ray shadowRay, float maxT,$/;" f typeref:typename:bool file: +checkShadowPlane shadows.c /^static bool checkShadowPlane(const t_ray shadowRay, float maxT, float epsilon,$/;" f typeref:typename:bool file: +checkShadowSphere shadows.c /^static bool checkShadowSphere(const t_ray shadowRay, float maxT, float epsilon,$/;" f typeref:typename:bool file: +check_if_max check.c /^void check_if_max(t_scene scene, const int to_test, const int max)$/;" f typeref:typename:void +check_sign ft_atof.c /^inline static char *check_sign(char *str, int *sign)$/;" f typeref:typename:char * file: check_tokens check.c /^int check_tokens(char **tokens, int expected)$/;" f typeref:typename:int clean libft/Makefile /^clean:$/;" t clean makefile /^clean:$/;" t @@ -305,25 +306,25 @@ clean minilibx-linux/test/Makefile.mk /^clean:$/;" t cmap minilibx-linux/mlx_int.h /^ Colormap cmap;$/;" m struct:s_xvar typeref:typename:Colormap col minilibx-linux/mlx_int.h /^ int col;$/;" m struct:s_xpm_col typeref:typename:int color miniRT.h /^ t_vec3 color;$/;" m struct:s_ambient typeref:typename:t_vec3 +color miniRT.h /^ t_vec3 color;$/;" m struct:s_calc typeref:typename:t_vec3 color miniRT.h /^ t_vec3 color;$/;" m struct:s_cylinder typeref:typename:t_vec3 color miniRT.h /^ t_vec3 color;$/;" m struct:s_light typeref:typename:t_vec3 color miniRT.h /^ t_vec3 color;$/;" m struct:s_plane typeref:typename:t_vec3 color miniRT.h /^ t_vec3 color;$/;" m struct:s_sphere typeref:typename:t_vec3 -color miniRT.h /^ t_vec3 color;$/;" m struct:s_calc typeref:typename:t_vec3 color minilibx-linux/mlx_int.h /^ int color;$/;" m struct:s_col_name typeref:typename:int color_map_1 minilibx-linux/test/main.c /^int color_map_1(void *win,int w,int h)$/;" f typeref:typename:int color_map_2 minilibx-linux/test/main.c /^int color_map_2(unsigned char *data,int bpp,int sl,int w,int h,int endian, int type)$/;" f typeref:typename:int -compute_cap_intersection parsing_cylinder_utils.c /^static void compute_cap_intersection(t_ray ray, t_cylinder cy, t_calc *calc) {$/;" f typeref:typename:void file: -compute_hit_normal parsing_cylinder_utils.c /^static void compute_hit_normal(t_ray ray, t_cylinder cy, t_calc *calc, t_vec3 *hitNormal) {$/;" f typeref:typename:void file: -compute_side_intersection parsing_cylinder_utils.c /^static void compute_side_intersection(t_cylinder cy, t_calc *calc) {$/;" f typeref:typename:void file: +compute_cap_intersection parsing_cylinder_utils.c /^static void compute_cap_intersection(t_ray ray, t_cylinder cy, t_calc *calc)$/;" f typeref:typename:void file: +compute_hit_normal parsing_cylinder_utils.c /^static void compute_hit_normal(t_ray ray, t_cylinder cy, t_calc *calc,$/;" f typeref:typename:void file: +compute_side_intersection parsing_cylinder_utils.c /^static void compute_side_intersection(t_cylinder cy, t_calc *calc)$/;" f typeref:typename:void file: count_word libft/ft_split.c /^static size_t count_word(char *str, char c)$/;" f typeref:typename:size_t file: counter libft/libft.h /^ size_t counter;$/;" m struct:s_info typeref:typename:size_t -cp miniRT.h /^ t_vec3 cp;$/;" m struct:s_calc typeref:typename:t_vec3 +cp miniRT.h /^ t_vec3 cp;$/;" m struct:s_calc typeref:typename:t_vec3 create_scene scene.c /^t_scene create_scene(void)$/;" f typeref:typename:t_scene cylinders miniRT.h /^ t_cylinder cylinders[MAX_CYLINDERS];$/;" m struct:s_scene typeref:typename:t_cylinder[] -d miniRT.h /^ t_vec3 d;$/;" m struct:s_calc typeref:typename:t_vec3 -d_dot_v miniRT.h /^ float d_dot_v;$/;" m struct:s_calc typeref:typename:float -d_perp miniRT.h /^ t_vec3 d_perp;$/;" m struct:s_calc typeref:typename:t_vec3 +d miniRT.h /^ t_vec3 d;$/;" m struct:s_calc typeref:typename:t_vec3 +d_dot_v miniRT.h /^ float d_dot_v;$/;" m struct:s_calc typeref:typename:float +d_perp miniRT.h /^ t_vec3 d_perp;$/;" m struct:s_calc typeref:typename:t_vec3 data minilibx-linux/mlx_int.h /^ char *data;$/;" m struct:s_img typeref:typename:char * data1 minilibx-linux/test/main.c /^char *data1;$/;" v typeref:typename:char * data2 minilibx-linux/test/main.c /^char *data2;$/;" v typeref:typename:char * @@ -332,14 +333,14 @@ data4 minilibx-linux/test/main.c /^char *data4;$/;" v typeref:typename:char * decrgb minilibx-linux/mlx_int.h /^ int decrgb[6];$/;" m struct:s_xvar typeref:typename:int[6] depth minilibx-linux/mlx_int.h /^ int depth;$/;" m struct:s_xvar typeref:typename:int dir miniRT.h /^ t_vec3 dir;$/;" m struct:s_ray typeref:typename:t_vec3 -disc miniRT.h /^ float disc;$/;" m struct:s_calc typeref:typename:float +disc miniRT.h /^ float disc;$/;" m struct:s_calc typeref:typename:float display minilibx-linux/mlx_int.h /^ Display *display;$/;" m struct:s_xvar typeref:typename:Display * -dist miniRT.h /^ float dist;$/;" m struct:s_calc typeref:typename:float +dist miniRT.h /^ float dist;$/;" m struct:s_calc typeref:typename:float divisor libft/ft_split.c /^static char **divisor(char *str1, char c, char **array, size_t len)$/;" f typeref:typename:char ** file: do_configure minilibx-linux/Makefile /^do_configure :$/;" t do_flush minilibx-linux/mlx_int.h /^ int do_flush;$/;" m struct:s_xvar typeref:typename:int end_loop minilibx-linux/mlx_int.h /^ int end_loop;$/;" m struct:s_xvar typeref:typename:int -endian miniRT.h /^ int endian;$/;" m struct:s_app typeref:typename:int +endian miniRT.h /^ int endian;$/;" m struct:s_app typeref:typename:int endian1 minilibx-linux/test/main.c /^int endian1;$/;" v typeref:typename:int endian2 minilibx-linux/test/main.c /^int endian2;$/;" v typeref:typename:int endian3 minilibx-linux/test/main.c /^int endian3;$/;" v typeref:typename:int @@ -351,7 +352,7 @@ expose_win2 minilibx-linux/test/main.c /^int expose_win2(void *p)$/;" f typeref: fclean libft/Makefile /^fclean: clean$/;" t fclean makefile /^fclean: clean$/;" t fd libft/libft.h /^ int fd;$/;" m struct:s_info typeref:typename:int -fd_if_exit miniRT.h /^ int fd_if_exit;$/;" m struct:s_scene typeref:typename:int +fd_if_exit miniRT.h /^ int fd_if_exit;$/;" m struct:s_scene typeref:typename:int format libft/printf_fd.c /^static int format(const char *str, t_info *info, va_list *args)$/;" f typeref:typename:int file: format minilibx-linux/mlx_int.h /^ int format;$/;" m struct:s_img typeref:typename:int fov miniRT.h /^ float fov;$/;" m struct:s_camera typeref:typename:float @@ -410,7 +411,7 @@ gc minilibx-linux/mlx_int.h /^ GC gc;$/;" m struct:s_win_list typeref:typena gc minilibx-linux/mlx_int.h /^ GC gc;$/;" m struct:s_img typeref:typename:GC gere_mouse minilibx-linux/test/new_win.c /^int gere_mouse(int x,int y,int button,void*toto)$/;" f typeref:typename:int get_next_line libft/gnl.c /^char *get_next_line(int fd)$/;" f typeref:typename:char * -get_tokens_secure parsing_utils.c /^char **get_tokens_secure(t_scene scene, const int numObject, const int numObjectMax, const int s/;" f typeref:typename:char ** +get_tokens_secure parsing_utils.c /^char **get_tokens_secure(t_scene scene, const int numObject,$/;" f typeref:typename:char ** get_xlib_include_path minilibx-linux/configure /^get_xlib_include_path(){$/;" f gnl_ft_getline libft/gnl.c /^char *gnl_ft_getline(char *static_str)$/;" f typeref:typename:char * gnl_ft_remove_bn libft/gnl.c /^char *gnl_ft_remove_bn(char *static_str)$/;" f typeref:typename:char * @@ -420,7 +421,7 @@ gnl_ft_strlen libft/gnl_utils.c /^size_t gnl_ft_strlen(char *s)$/;" f typeref:ty gnl_read_fd libft/gnl.c /^char *gnl_read_fd(int fd, char *str)$/;" f typeref:typename:char * height miniRT.h /^ float height;$/;" m struct:s_cylinder typeref:typename:float height minilibx-linux/mlx_int.h /^ int height;$/;" m struct:s_img typeref:typename:int -hitPoint miniRT.h /^ t_vec3 hitPoint;$/;" m struct:s_calc typeref:typename:t_vec3 +hitPoint miniRT.h /^ t_vec3 hitPoint;$/;" m struct:s_calc typeref:typename:t_vec3 hook minilibx-linux/mlx_int.h /^ int (*hook)();$/;" m struct:s_event_list typeref:typename:int (*)() hooks minilibx-linux/mlx_int.h /^ t_event_list hooks[MLX_MAX_EVENT];$/;" m struct:s_win_list typeref:typename:t_event_list[] i libft/libft.h /^ size_t i;$/;" m struct:s_info typeref:typename:size_t @@ -429,33 +430,33 @@ im2 minilibx-linux/test/main.c /^void *im2;$/;" v typeref:typename:void * im3 minilibx-linux/test/main.c /^void *im3;$/;" v typeref:typename:void * im4 minilibx-linux/test/main.c /^void *im4;$/;" v typeref:typename:void * image minilibx-linux/mlx_int.h /^ XImage *image;$/;" m struct:s_img typeref:typename:XImage * -img miniRT.h /^ void *img;$/;" m struct:s_app typeref:typename:void * +img miniRT.h /^ void *img;$/;" m struct:s_app typeref:typename:void * init_app_config main.c /^static int init_app_config(t_app *app, int argc, char **argv)$/;" f typeref:typename:int file: -init_intersection parsing_cylinder_utils.c /^static int init_intersection(t_ray ray, t_cylinder cy, t_calc *calc) {$/;" f typeref:typename:int file: +init_intersection parsing_cylinder_utils.c /^static int init_intersection(t_ray ray, t_cylinder cy, t_calc *calc)$/;" f typeref:typename:int file: init_mlx_and_image main.c /^static int init_mlx_and_image(t_app *app)$/;" f typeref:typename:int file: -intersectCylinder parsing_cylinder_utils.c /^float intersectCylinder(t_ray ray, t_cylinder cy, t_vec3 *hitNormal) {$/;" f typeref:typename:float -intersectObjects trace.c /^bool intersectObjects(t_ray ray, float *tMin, t_vec3 *hitNormal, t_vec3 *objColor, t_scene scene/;" f typeref:typename:bool +intersectCylinder parsing_cylinder_utils.c /^float intersectCylinder(t_ray ray, t_cylinder cy, t_vec3 *hitNormal)$/;" f typeref:typename:float +intersectObjects trace.c /^bool intersectObjects(t_ray ray, float *tMin, t_vec3 *hitNormal,$/;" f typeref:typename:bool intersectPlane parsing_plane.c /^float intersectPlane(t_ray ray, t_plane p, t_vec3 *hitNormal)$/;" f typeref:typename:float intersectSphere parsing_sphere.c /^float intersectSphere(t_ray ray, t_sphere s, t_vec3 *hitNormal)$/;" f typeref:typename:float -isInShadow shadows.c /^bool isInShadow(t_vec3 hitPoint, t_vec3 lightPos, t_scene scene) {$/;" f typeref:typename:bool -key_a miniRT.h /^ int key_a;$/;" m struct:s_app typeref:typename:int -key_d miniRT.h /^ int key_d;$/;" m struct:s_app typeref:typename:int -key_down miniRT.h /^ int key_down;$/;" m struct:s_app typeref:typename:int +isInShadow shadows.c /^bool isInShadow(t_vec3 hitPoint, t_vec3 lightPos, t_scene scene)$/;" f typeref:typename:bool +key_a miniRT.h /^ int key_a;$/;" m struct:s_app typeref:typename:int +key_d miniRT.h /^ int key_d;$/;" m struct:s_app typeref:typename:int +key_down miniRT.h /^ int key_down;$/;" m struct:s_app typeref:typename:int key_hook minilibx-linux/mlx_int.h /^ int (*key_hook)();$/;" m struct:s_win_list typeref:typename:int (*)() -key_left miniRT.h /^ int key_left;$/;" m struct:s_app typeref:typename:int +key_left miniRT.h /^ int key_left;$/;" m struct:s_app typeref:typename:int key_param minilibx-linux/mlx_int.h /^ void *key_param;$/;" m struct:s_win_list typeref:typename:void * key_press peripherique.c /^int key_press(int keycode, t_app *app)$/;" f typeref:typename:int key_release peripherique.c /^int key_release(int keycode, t_app *app)$/;" f typeref:typename:int -key_right miniRT.h /^ int key_right;$/;" m struct:s_app typeref:typename:int -key_s miniRT.h /^ int key_s;$/;" m struct:s_app typeref:typename:int -key_up miniRT.h /^ int key_up;$/;" m struct:s_app typeref:typename:int -key_w miniRT.h /^ int key_w;$/;" m struct:s_app typeref:typename:int +key_right miniRT.h /^ int key_right;$/;" m struct:s_app typeref:typename:int +key_s miniRT.h /^ int key_s;$/;" m struct:s_app typeref:typename:int +key_up miniRT.h /^ int key_up;$/;" m struct:s_app typeref:typename:int +key_w miniRT.h /^ int key_w;$/;" m struct:s_app typeref:typename:int key_win1 minilibx-linux/test/main.c /^int key_win1(int key,void *p)$/;" f typeref:typename:int key_win2 minilibx-linux/test/main.c /^int key_win2(int key,void *p)$/;" f typeref:typename:int key_win3 minilibx-linux/test/main.c /^int key_win3(int key,void *p)$/;" f typeref:typename:int len_word libft/ft_split.c /^static size_t len_word(char *s, char c, size_t start)$/;" f typeref:typename:size_t file: lights miniRT.h /^ t_light lights[MAX_LIGHTS];$/;" m struct:s_scene typeref:typename:t_light[] -line_if_exit miniRT.h /^ char *line_if_exit;$/;" m struct:s_scene typeref:typename:char * +line_if_exit miniRT.h /^ char *line_if_exit;$/;" m struct:s_scene typeref:typename:char * load_config config.c /^t_scene load_config(const char *filename)$/;" f typeref:typename:t_scene local_endian minilibx-linux/test/main.c /^int local_endian;$/;" v typeref:typename:int log_error minilibx-linux/configure /^log_error(){$/;" f @@ -472,7 +473,7 @@ main minilibx-linux/test/main.c /^int main()$/;" f typeref:typename:int main minilibx-linux/test/new_win.c /^int main()$/;" f typeref:typename:int main minilibx-linux/test/run_tests.sh /^main(){$/;" f mask minilibx-linux/mlx_int.h /^ int mask;$/;" m struct:s_event_list typeref:typename:int -mlx miniRT.h /^ void *mlx;$/;" m struct:s_app typeref:typename:void * +mlx miniRT.h /^ void *mlx;$/;" m struct:s_app typeref:typename:void * mlx minilibx-linux/test/main.c /^void *mlx;$/;" v typeref:typename:void * mlx minilibx-linux/test/new_win.c /^void *mlx;$/;" v typeref:typename:void * mlx_X_error minilibx-linux/mlx_new_image.c /^int mlx_X_error;$/;" v typeref:typename:int @@ -546,16 +547,16 @@ mlx_xpm_to_image minilibx-linux/mlx_xpm.c /^void *mlx_xpm_to_image(t_xvar *xvar, mouse_hook minilibx-linux/mlx_int.h /^ int (*mouse_hook)();$/;" m struct:s_win_list typeref:typename:int (*)() mouse_move peripherique.c /^int mouse_move(int x, int y, t_app *app)$/;" f typeref:typename:int mouse_param minilibx-linux/mlx_int.h /^ void *mouse_param;$/;" m struct:s_win_list typeref:typename:void * -mouse_sens miniRT.h /^ float mouse_sens;$/;" m struct:s_app typeref:typename:float +mouse_sens miniRT.h /^ float mouse_sens;$/;" m struct:s_app typeref:typename:float mouse_win1 minilibx-linux/test/main.c /^int mouse_win1(int button,int x,int y, void *p)$/;" f typeref:typename:int mouse_win2 minilibx-linux/test/main.c /^int mouse_win2(int button,int x,int y, void *p)$/;" f typeref:typename:int mouse_win3 minilibx-linux/test/main.c /^int mouse_win3(int x,int y, void *p)$/;" f typeref:typename:int move_speed miniRT.h /^ float move_speed;$/;" m struct:s_camera typeref:typename:float -n miniRT.h /^ t_vec3 n;$/;" m struct:s_calc typeref:typename:t_vec3 +n miniRT.h /^ t_vec3 n;$/;" m struct:s_calc typeref:typename:t_vec3 name minilibx-linux/mlx_int.h /^ char *name;$/;" m struct:s_col_name typeref:typename:char * name minilibx-linux/mlx_int.h /^ int name;$/;" m struct:s_xpm_col typeref:typename:int -ndc_x miniRT.h /^ float ndc_x;$/;" m struct:s_calc typeref:typename:float -ndc_y miniRT.h /^ float ndc_y;$/;" m struct:s_calc typeref:typename:float +ndc_x miniRT.h /^ float ndc_x;$/;" m struct:s_calc typeref:typename:float +ndc_y miniRT.h /^ float ndc_y;$/;" m struct:s_calc typeref:typename:float next minilibx-linux/mlx_int.h /^ struct s_win_list *next;$/;" m struct:s_win_list typeref:struct:s_win_list * normal miniRT.h /^ t_vec3 normal;$/;" m struct:s_plane typeref:typename:t_vec3 numAmbient miniRT.h /^ int numAmbient;$/;" m struct:s_scene typeref:typename:int @@ -564,42 +565,42 @@ numCylinders miniRT.h /^ int numCylinders;$/;" m struct:s_scene typeref:typena numLights miniRT.h /^ int numLights;$/;" m struct:s_scene typeref:typename:int numPlanes miniRT.h /^ int numPlanes;$/;" m struct:s_scene typeref:typename:int numSpheres miniRT.h /^ int numSpheres;$/;" m struct:s_scene typeref:typename:int -oc miniRT.h /^ t_vec3 oc;$/;" m struct:s_calc typeref:typename:t_vec3 -oc_dot_v miniRT.h /^ float oc_dot_v;$/;" m struct:s_calc typeref:typename:float -oc_perp miniRT.h /^ t_vec3 oc_perp;$/;" m struct:s_calc typeref:typename:t_vec3 +oc miniRT.h /^ t_vec3 oc;$/;" m struct:s_calc typeref:typename:t_vec3 +oc_dot_v miniRT.h /^ float oc_dot_v;$/;" m struct:s_calc typeref:typename:float +oc_perp miniRT.h /^ t_vec3 oc_perp;$/;" m struct:s_calc typeref:typename:t_vec3 origin miniRT.h /^ t_vec3 origin;$/;" m struct:s_ray typeref:typename:t_vec3 -p miniRT.h /^ t_vec3 p;$/;" m struct:s_calc typeref:typename:t_vec3 +p miniRT.h /^ t_vec3 p;$/;" m struct:s_calc typeref:typename:t_vec3 param minilibx-linux/mlx_int.h /^ void *param;$/;" m struct:s_event_list typeref:typename:void * parse_args minilibx-linux/configure /^parse_args(){$/;" f parse_color parsing_color.c /^t_vec3 parse_color(const char *token, t_scene scene)$/;" f typeref:typename:t_vec3 parse_vector parsing_vector.c /^t_vec3 parse_vector(const char *token, t_scene scene)$/;" f typeref:typename:t_vec3 parse_vector_normalize parsing_vector.c /^t_vec3 parse_vector_normalize(const char *token, t_scene scene)$/;" f typeref:typename:t_vec3 parsing_ambiant parsing_ambiant.c /^t_scene parsing_ambiant(t_scene scene)$/;" f typeref:typename:t_scene -parsing_camera parsing_camera.c /^t_scene parsing_camera(t_scene scene)$/;" f typeref:typename:t_scene +parsing_camera parsing_camera.c /^t_scene parsing_camera(t_scene scene)$/;" f typeref:typename:t_scene parsing_cylindre parsing_cylinder.c /^t_scene parsing_cylindre(t_scene scene)$/;" f typeref:typename:t_scene parsing_light parsing_light.c /^t_scene parsing_light(t_scene scene)$/;" f typeref:typename:t_scene parsing_line config.c /^static inline t_scene parsing_line(char *line, t_scene scene)$/;" f typeref:typename:t_scene file: parsing_plane parsing_plane.c /^t_scene parsing_plane(t_scene scene)$/;" f typeref:typename:t_scene parsing_sphere parsing_sphere.c /^t_scene parsing_sphere(t_scene scene)$/;" f typeref:typename:t_scene partie_entiere libft/ft_strtod.c /^static int partie_entiere(double *entier, char *string, int i, double *sign)$/;" f typeref:typename:int file: -pitch miniRT.h /^ float pitch; \/\/ vue de haut en bas en radians$/;" m struct:s_camera typeref:typename:float +pitch miniRT.h /^ float pitch; \/\/ vue de haut en bas en radians$/;" m struct:s_camera typeref:typename:float pix minilibx-linux/mlx_int.h /^ Pixmap pix;$/;" m struct:s_img typeref:typename:Pixmap -pixels miniRT.h /^ int *pixels;$/;" m struct:s_app typeref:typename:int * +pixels miniRT.h /^ int *pixels;$/;" m struct:s_app typeref:typename:int * planes miniRT.h /^ t_plane planes[MAX_PLANES];$/;" m struct:s_scene typeref:typename:t_plane[] point miniRT.h /^ t_vec3 point;$/;" m struct:s_plane typeref:typename:t_vec3 pos miniRT.h /^ t_vec3 pos;$/;" m struct:s_light typeref:typename:t_vec3 -print_ambient print.c /^void print_ambient(t_ambient amb) {$/;" f typeref:typename:void -print_camera print.c /^void print_camera(t_camera cam) {$/;" f typeref:typename:void -print_cylinder print.c /^void print_cylinder(t_cylinder cyl) {$/;" f typeref:typename:void -print_light print.c /^void print_light(t_light light) {$/;" f typeref:typename:void -print_plane print.c /^void print_plane(t_plane plane) {$/;" f typeref:typename:void -print_ray print.c /^void print_ray(t_ray ray) {$/;" f typeref:typename:void -print_scene print.c /^void print_scene(t_scene scene) {$/;" f typeref:typename:void -print_sphere print.c /^void print_sphere(t_sphere sphere) {$/;" f typeref:typename:void -print_vec3 print.c /^void print_vec3(t_vec3 vec) {$/;" f typeref:typename:void +print_ambient print.c /^void print_ambient(t_ambient amb)$/;" f typeref:typename:void +print_camera print.c /^void print_camera(t_camera cam)$/;" f typeref:typename:void +print_cylinder print_next.c /^void print_cylinder(t_cylinder cyl)$/;" f typeref:typename:void +print_light print.c /^void print_light(t_light light)$/;" f typeref:typename:void +print_plane print_next.c /^void print_plane(t_plane plane)$/;" f typeref:typename:void +print_ray print_next.c /^void print_ray(t_ray ray)$/;" f typeref:typename:void +print_scene print.c /^void print_scene(t_scene scene)$/;" f typeref:typename:void +print_sphere print_next.c /^void print_sphere(t_sphere sphere)$/;" f typeref:typename:void +print_vec3 print_next.c /^void print_vec3(t_vec3 vec)$/;" f typeref:typename:void printf_fd libft/printf_fd.c /^int printf_fd(int fd, const char *str, ...)$/;" f typeref:typename:int private_cmap minilibx-linux/mlx_int.h /^ int private_cmap;$/;" m struct:s_xvar typeref:typename:int -proj miniRT.h /^ float proj;$/;" m struct:s_calc typeref:typename:float +proj miniRT.h /^ float proj;$/;" m struct:s_calc typeref:typename:float pshm_format minilibx-linux/mlx_int.h /^ int pshm_format;$/;" m struct:s_xvar typeref:typename:int putnbr_b libft/printf_fd.c /^static int putnbr_b(t_lu n, char *str, int numdig, t_info *info)$/;" f typeref:typename:int file: putstr libft/printf_fd.c /^static int putstr(char *str, char c, int is_char, t_info *info)$/;" f typeref:typename:int file: @@ -608,8 +609,8 @@ radius miniRT.h /^ float radius; \/\/ Demi-diamètre$/;" m struct:s_cylinder typ range_is_ok parsing_color.c /^static inline int range_is_ok(char **token_color)$/;" f typeref:typename:int file: range_is_ok parsing_vector.c /^static inline int range_is_ok(char **token_vector)$/;" f typeref:typename:int file: ratio miniRT.h /^ float ratio;$/;" m struct:s_ambient typeref:typename:float -ray miniRT.h /^ t_ray ray;$/;" m struct:s_calc typeref:typename:t_ray -ray_dir miniRT.h /^ t_vec3 ray_dir;$/;" m struct:s_calc typeref:typename:t_vec3 +ray miniRT.h /^ t_ray ray;$/;" m struct:s_calc typeref:typename:t_ray +ray_dir miniRT.h /^ t_vec3 ray_dir;$/;" m struct:s_calc typeref:typename:t_vec3 re libft/Makefile /^re: fclean all$/;" t re makefile /^re: fclean all$/;" t re minilibx-linux/Makefile /^re : clean all$/;" t @@ -638,12 +639,12 @@ s_win_list minilibx-linux/mlx_int.h /^typedef struct s_win_list$/;" s s_xpm_col minilibx-linux/mlx_int.h /^typedef struct s_xpm_col$/;" s s_xvar minilibx-linux/mlx_int.h /^typedef struct s_xvar$/;" s saved_mode minilibx-linux/mlx_ext_randr.c /^RRMode saved_mode = 0;$/;" v typeref:typename:RRMode -scale miniRT.h /^ float scale;$/;" m struct:s_calc typeref:typename:float -scene miniRT.h /^ t_scene scene;$/;" m struct:s_app typeref:typename:t_scene +scale miniRT.h /^ float scale;$/;" m struct:s_calc typeref:typename:float +scene miniRT.h /^ t_scene scene;$/;" m struct:s_app typeref:typename:t_scene screen minilibx-linux/mlx_int.h /^ int screen;$/;" m struct:s_xvar typeref:typename:int -screen_x miniRT.h /^ float screen_x;$/;" m struct:s_calc typeref:typename:float -screen_y miniRT.h /^ float screen_y;$/;" m struct:s_calc typeref:typename:float -select_final_intersection parsing_cylinder_utils.c /^static float select_final_intersection(t_calc *calc) {$/;" f typeref:typename:float file: +screen_x miniRT.h /^ float screen_x;$/;" m struct:s_calc typeref:typename:float +screen_y miniRT.h /^ float screen_y;$/;" m struct:s_calc typeref:typename:float +select_final_intersection parsing_cylinder_utils.c /^static float select_final_intersection(t_calc *calc)$/;" f typeref:typename:float file: setup_hooks main.c /^static void setup_hooks(t_app *app)$/;" f typeref:typename:void file: shm minilibx-linux/mlx_int.h /^ XShmSegmentInfo shm;$/;" m struct:s_img typeref:typename:XShmSegmentInfo shm_att_pb minilibx-linux/mlx_new_image.c /^int shm_att_pb(Display *d,XErrorEvent *ev)$/;" f typeref:typename:int @@ -651,27 +652,27 @@ show minilibx-linux/Makefile.mk /^show:$/;" t show minilibx-linux/test/Makefile.mk /^show:$/;" t show_help minilibx-linux/configure /^show_help(){$/;" f sigint_handler minilibx-linux/test/run_tests.sh /^sigint_handler(){$/;" f -size_line miniRT.h /^ int size_line;$/;" m struct:s_app typeref:typename:int +size_line miniRT.h /^ int size_line;$/;" m struct:s_app typeref:typename:int size_line minilibx-linux/mlx_int.h /^ int size_line;$/;" m struct:s_img typeref:typename:int sl1 minilibx-linux/test/main.c /^int sl1;$/;" v typeref:typename:int sl2 minilibx-linux/test/main.c /^int sl2;$/;" v typeref:typename:int sl3 minilibx-linux/test/main.c /^int sl3;$/;" v typeref:typename:int sl4 minilibx-linux/test/main.c /^int sl4;$/;" v typeref:typename:int spheres miniRT.h /^ t_sphere spheres[MAX_SPHERES];$/;" m struct:s_scene typeref:typename:t_sphere[] -sqrtDisc miniRT.h /^ float sqrtDisc;$/;" m struct:s_calc typeref:typename:float +sqrtDisc miniRT.h /^ float sqrtDisc;$/;" m struct:s_calc typeref:typename:float strlcpy_is_not_posix minilibx-linux/mlx_xpm.c /^unsigned int strlcpy_is_not_posix(char *dest, char *src, unsigned int size)$/;" f typeref:typename:unsigned int -t miniRT.h /^ float t;$/;" m struct:s_calc typeref:typename:float -t0 miniRT.h /^ float t0;$/;" m struct:s_calc typeref:typename:float -t1 miniRT.h /^ float t1;$/;" m struct:s_calc typeref:typename:float +t miniRT.h /^ float t;$/;" m struct:s_calc typeref:typename:float +t0 miniRT.h /^ float t0;$/;" m struct:s_calc typeref:typename:float +t1 miniRT.h /^ float t1;$/;" m struct:s_calc typeref:typename:float t_ambient miniRT.h /^} t_ambient;$/;" t typeref:struct:s_ambient t_app miniRT.h /^} t_app;$/;" t typeref:struct:s_app -t_bot miniRT.h /^ float t_bot;$/;" m struct:s_calc typeref:typename:float +t_bot miniRT.h /^ float t_bot;$/;" m struct:s_calc typeref:typename:float t_calc miniRT.h /^} t_calc;$/;" t typeref:struct:s_calc t_camera miniRT.h /^} t_camera;$/;" t typeref:struct:s_camera -t_cap miniRT.h /^ float t_cap;$/;" m struct:s_calc typeref:typename:float +t_cap miniRT.h /^ float t_cap;$/;" m struct:s_calc typeref:typename:float t_cylinder miniRT.h /^} t_cylinder;$/;" t typeref:struct:s_cylinder t_event_list minilibx-linux/mlx_int.h /^} t_event_list;$/;" t typeref:struct:s_event_list -t_final miniRT.h /^ float t_final;$/;" m struct:s_calc typeref:typename:float +t_final miniRT.h /^ float t_final;$/;" m struct:s_calc typeref:typename:float t_img minilibx-linux/mlx_int.h /^} t_img;$/;" t typeref:struct:s_img t_info libft/libft.h /^typedef struct s_info t_info;$/;" t typeref:struct:s_info t_light miniRT.h /^} t_light;$/;" t typeref:struct:s_light @@ -679,17 +680,17 @@ t_lu libft/libft.h /^typedef unsigned long t_lu;$/;" t typeref:typename:unsigne t_plane miniRT.h /^} t_plane;$/;" t typeref:struct:s_plane t_ray miniRT.h /^} t_ray;$/;" t typeref:struct:s_ray t_scene miniRT.h /^} t_scene;$/;" t typeref:struct:s_scene -t_side miniRT.h /^ float t_side;$/;" m struct:s_calc typeref:typename:float +t_side miniRT.h /^ float t_side;$/;" m struct:s_calc typeref:typename:float t_sphere miniRT.h /^} t_sphere;$/;" t typeref:struct:s_sphere -t_top miniRT.h /^ float t_top;$/;" m struct:s_calc typeref:typename:float +t_top miniRT.h /^ float t_top;$/;" m struct:s_calc typeref:typename:float t_ui libft/libft.h /^typedef unsigned int t_ui;$/;" t typeref:typename:unsigned int t_vec3 miniRT.h /^} t_vec3;$/;" t typeref:struct:s_vec3 t_win_list minilibx-linux/mlx_int.h /^} t_win_list;$/;" t typeref:struct:s_win_list t_xpm_col minilibx-linux/mlx_int.h /^} t_xpm_col;$/;" t typeref:struct:s_xpm_col t_xvar minilibx-linux/mlx_int.h /^} t_xvar;$/;" t typeref:struct:s_xvar test_default_main minilibx-linux/test/run_tests.sh /^test_default_main(){$/;" f -token_if_exit miniRT.h /^ char **token_if_exit;$/;" m struct:s_scene typeref:typename:char ** -trace trace.c /^t_vec3 trace(t_ray ray, t_scene scene) {$/;" f typeref:typename:t_vec3 +token_if_exit miniRT.h /^ char **token_if_exit;$/;" m struct:s_scene typeref:typename:char ** +trace trace.c /^t_vec3 trace(t_ray ray, t_scene scene)$/;" f typeref:typename:t_vec3 treat_int libft/printf_fd.c /^static int treat_int(int n, char *str, int numdig, t_info *info)$/;" f typeref:typename:int file: type minilibx-linux/mlx_int.h /^ int type;$/;" m struct:s_img typeref:typename:int up miniRT.h /^ t_vec3 up;$/;" m struct:s_camera typeref:typename:t_vec3 @@ -698,7 +699,7 @@ update_camera_movement update_camera.c /^static void update_camera_movement(t_ap update_camera_rotation update_camera.c /^static void update_camera_rotation(t_app *app)$/;" f typeref:typename:void file: update_frame frame.c /^int update_frame(t_app *app)$/;" f typeref:typename:int use_xshm minilibx-linux/mlx_int.h /^ int use_xshm;$/;" m struct:s_xvar typeref:typename:int -v miniRT.h /^ t_vec3 v;$/;" m struct:s_calc typeref:typename:t_vec3 +v miniRT.h /^ t_vec3 v;$/;" m struct:s_calc typeref:typename:t_vec3 vec3_add calcul_de_vecteur.c /^t_vec3 vec3_add(t_vec3 a, t_vec3 b)$/;" f typeref:typename:t_vec3 vec3_cross calcul_de_vecteur.c /^t_vec3 vec3_cross(t_vec3 a, t_vec3 b)$/;" f typeref:typename:t_vec3 vec3_dot calcul_de_vecteur.c /^float vec3_dot(t_vec3 a, t_vec3 b)$/;" f typeref:typename:float @@ -709,23 +710,23 @@ vec3_scale calcul_de_vecteur.c /^t_vec3 vec3_scale(t_vec3 a, float s)$/;" f type vec3_sub calcul_de_vecteur.c /^t_vec3 vec3_sub(t_vec3 a, t_vec3 b)$/;" f typeref:typename:t_vec3 visual minilibx-linux/mlx_int.h /^ Visual *visual;$/;" m struct:s_xvar typeref:typename:Visual * width minilibx-linux/mlx_int.h /^ int width;$/;" m struct:s_img typeref:typename:int -win miniRT.h /^ void *win;$/;" m struct:s_app typeref:typename:void * +win miniRT.h /^ void *win;$/;" m struct:s_app typeref:typename:void * win1 minilibx-linux/test/main.c /^void *win1;$/;" v typeref:typename:void * win1 minilibx-linux/test/new_win.c /^void *win1;$/;" v typeref:typename:void * win2 minilibx-linux/test/main.c /^void *win2;$/;" v typeref:typename:void * win2 minilibx-linux/test/new_win.c /^void *win2;$/;" v typeref:typename:void * win3 minilibx-linux/test/main.c /^void *win3;$/;" v typeref:typename:void * win_count minilibx-linux/mlx_loop.c /^static int win_count(t_xvar *xvar)$/;" f typeref:typename:int file: -win_height miniRT.h /^ int win_height;$/;" m struct:s_app typeref:typename:int +win_height miniRT.h /^ int win_height;$/;" m struct:s_app typeref:typename:int win_list minilibx-linux/mlx_int.h /^ t_win_list *win_list;$/;" m struct:s_xvar typeref:typename:t_win_list * -win_width miniRT.h /^ int win_width;$/;" m struct:s_app typeref:typename:int +win_width miniRT.h /^ int win_width;$/;" m struct:s_app typeref:typename:int window minilibx-linux/mlx_int.h /^ Window window;$/;" m struct:s_win_list typeref:typename:Window wm_delete_window minilibx-linux/mlx_int.h /^ Atom wm_delete_window;$/;" m struct:s_xvar typeref:typename:Atom wm_protocols minilibx-linux/mlx_int.h /^ Atom wm_protocols;$/;" m struct:s_xvar typeref:typename:Atom x miniRT.h /^ float x;$/;" m struct:s_vec3 typeref:typename:float xpm1_x minilibx-linux/test/main.c /^int xpm1_x;$/;" v typeref:typename:int xpm1_y minilibx-linux/test/main.c /^int xpm1_y;$/;" v typeref:typename:int +y miniRT.h /^ float y;$/;" m struct:s_calc typeref:typename:float y miniRT.h /^ float y;$/;" m struct:s_vec3 typeref:typename:float -y miniRT.h /^ float y;$/;" m struct:s_calc typeref:typename:float -yaw miniRT.h /^ float yaw;\/\/ vue de gauche a droite$/;" m struct:s_camera typeref:typename:float +yaw miniRT.h /^ float yaw; \/\/ vue de gauche a droite$/;" m struct:s_camera typeref:typename:float z miniRT.h /^ float z;$/;" m struct:s_vec3 typeref:typename:float diff --git a/trace.c b/trace.c index 90ef603..b62e03e 100644 --- a/trace.c +++ b/trace.c @@ -6,14 +6,14 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/17 19:07:07 by yantoine #+# #+# */ -/* Updated: 2025/02/17 21:51:30 by yantoine ### ########.fr */ +/* Updated: 2025/02/18 17:15:32 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ #include "miniRT.h" // Renvoie true si le rayon intersecte un objet, et met à jour tMin, - hitNormal et objColor +//hitNormal et objColor bool intersectObjects(t_ray ray, float *tMin, t_vec3 *hitNormal, t_vec3 *objColor, t_scene scene) { @@ -115,8 +115,8 @@ t_vec3 trace(t_ray ray, t_scene scene) t_vec3 hitPoint; tMin = 1e9; - hitNormal = {0, 0, 0}; - objColor = {0, 0, 0}; + hitNormal = (t_vec3){0, 0, 0}; + objColor = (t_vec3){0, 0, 0}; if (intersectObjects(ray, &tMin, &hitNormal, &objColor, scene)) { hitPoint = vec3_add(ray.origin, vec3_scale(ray.dir, tMin));