object.c
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* object.c :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <gychoi@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2023/05/11 22:05:55 by gychoi #+# #+# */ 9 /* Updated: 2023/05/18 17:28:06 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "pracrt.h" 14 #include "object.h" 15 16 t_object object(t_color3 color) 17 { 18 t_object obj; 19 20 obj.amb = color; 21 obj.dif = color; 22 obj.spec = color; 23 obj.alpha = 10.0f; 24 obj.ks = 1.0f; 25 obj.reflection = 0.0f; 26 obj.transparency = 0.0f; 27 obj.amb_texture = NULL; 28 obj.dif_texture = NULL; 29 return (obj); 30 } 31 32 t_sphere *sphere(t_point3 center, double radius) 33 { 34 t_sphere *sphere; 35 36 sphere = malloc(sizeof(t_sphere)); 37 if (!sphere) 38 return (NULL); 39 sphere->center = center; 40 sphere->radius = radius; 41 sphere->obj = object(color3(0.5f, 0.5f, 0.5f)); 42 return (sphere); 43 } 44 45 t_triangle *triangle(t_point3 v0, t_point3 v1, t_point3 v2) 46 { 47 t_triangle *triangle; 48 49 triangle = malloc(sizeof(t_triangle)); 50 if (!triangle) 51 return (NULL); 52 triangle->v0 = v0; 53 triangle->v1 = v1; 54 triangle->v2 = v2; 55 triangle->obj = object(color3(0.5f, 0.5f, 0.5f)); 56 triangle->uv0 = vec2(0.0f, 0.0f); 57 triangle->uv1 = vec2(0.0f, 0.0f); 58 triangle->uv2 = vec2(0.0f, 0.0f); 59 return (triangle); 60 } 61 62 t_square *square(t_point3 v0, t_point3 v1, t_point3 v2, t_point3 v3, t_vec2 uv0, t_vec2 uv1, t_vec2 uv2, t_vec2 uv3) 63 { 64 t_square *square; 65 66 square = malloc(sizeof(t_triangle) * 2); 67 if (!square) 68 return (NULL); 69 square->triangle1 = triangle(v0, v1, v2); 70 square->triangle2 = triangle(v0, v2, v3); 71 square->obj = object(color3(0.5f, 0.5f, 0.5f)); 72 // for test sampling 73 square->triangle1->uv0 = uv0; 74 square->triangle1->uv1 = uv1; 75 square->triangle1->uv2 = uv2; 76 square->triangle2->uv0 = uv0; 77 square->triangle2->uv1 = uv2; 78 square->triangle2->uv2 = uv3; 79 return (square); 80 }