typedef.h
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* typedef.h :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: salee2 <salee2@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2023/05/24 20:23:57 by salee2 #+# #+# */ 9 /* Updated: 2023/05/24 20:23:58 by salee2 ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #ifndef MINIRT_TYPEDEF_H 14 #define MINIRT_TYPEDEF_H 15 16 typedef int t_bool; 17 18 typedef struct s_vector2 19 { 20 double x, y; 21 } t_vec2; 22 23 typedef struct s_vector3 24 { 25 union { 26 struct {double ai,bj,ck;}; 27 struct {double x,y,z;}; 28 struct {double r,g,b;}; 29 struct {double arr[3];}; 30 }; 31 } t_vec3; 32 33 typedef t_vec3 t_color3; 34 typedef t_vec3 t_point3; 35 36 typedef struct s_ray 37 { 38 t_vec3 dir; 39 t_point3 origin; 40 } t_ray; 41 42 typedef struct s_plane 43 { 44 t_vec3 normal; 45 t_point3 point; 46 } t_plane; 47 48 typedef struct s_sphere 49 { 50 double radius; 51 double radius_sq; 52 t_point3 center; 53 } t_sphere; 54 55 typedef struct s_cylinder 56 { 57 double height; 58 double radius; 59 double radius_sq; 60 t_vec3 normal; 61 t_point3 top_center; 62 t_point3 base_center; 63 } t_cylinder; 64 65 typedef struct s_cone 66 { 67 double height; 68 double radius; 69 double radius_sq; 70 t_vec3 normal; 71 t_vec3 h_dir; 72 t_vec3 h_normal; 73 t_point3 tip_center; 74 t_point3 base_center; 75 } t_cone; 76 77 typedef struct s_raytracer 78 { 79 int width; 80 int height; 81 t_sphere sphere; 82 } t_raytracer; 83 84 typedef struct s_hit 85 { 86 double t; 87 double t_min; 88 double t_max; 89 t_vec3 normal; 90 t_point3 point; 91 t_color3 albedo; 92 } t_hit; 93 94 typedef struct s_camera 95 { 96 double viewport_w; 97 double viewport_h; 98 t_point3 origin; 99 t_point3 lower_left_corner; 100 t_vec3 ai; 101 t_vec3 bj; 102 } t_camera; 103 104 typedef struct s_canvas 105 { 106 int width; 107 int height; 108 double aspect_ratio; 109 } t_canvas; 110 111 typedef int t_object_type; 112 113 typedef struct s_object 114 { 115 void *element; 116 void *next; 117 t_color3 albedo; 118 t_object_type type; 119 } t_object; 120 121 typedef struct s_light 122 { 123 t_point3 origin; 124 t_color3 color; 125 double bright_ratio; 126 } t_light; 127 128 typedef struct s_scene 129 { 130 t_ray ray; 131 t_hit hit; 132 t_canvas canvas; 133 t_camera camera; 134 t_color3 ambient; 135 t_object *light; 136 t_object *objects; 137 } t_scene; 138 139 typedef struct s_coefficient 140 { 141 double a; 142 double b; 143 double c; 144 } t_coefficient; 145 146 typedef struct mlx_data{ 147 void *img; 148 char *addr; 149 int bits_per_pixel; 150 int line_length; 151 int endian; 152 } t_mlx_data; 153 154 155 typedef struct s_vars 156 { 157 void *mlx; 158 void *win; 159 t_mlx_data img; 160 t_scene *scene; 161 } t_vars; 162 163 #endif //MINIRT_TYPEDEF_H