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  }