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