scene.c
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   scene.c                                            :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: gychoi <gychoi@student.42seoul.kr>         +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2023/05/04 16:10:34 by gychoi            #+#    #+#             */
 9  /*   Updated: 2023/05/07 21:34:30 by gychoi           ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #include "header.h"
14  
15  // canvas가 왜 필요할까?
16  t_canvas	canvas(int width, int height)
17  {
18  	t_canvas	canvas;
19  
20  	canvas.width = width;
21  	canvas.height = height;
22  	canvas.aspect_ratio = (double)width / (double)height;
23  	return (canvas);
24  }
25  
26  t_camera	camera(t_canvas canvas, t_point3 origin)
27  {
28  	t_camera	cam;
29  	double		focal_len;
30  	double		vp_height;
31  
32  	vp_height = 2.0;
33  	focal_len = 1.0;
34  	cam.origin = origin;
35  	cam.vp_height = vp_height;
36  	cam.vp_width = vp_height * canvas.aspect_ratio;
37  	cam.focal_len = focal_len;
38  	// changed
39  	cam.horizontal = vec3(cam.vp_width, 0, 0);
40  	cam.vertical = vec3(0, cam.vp_height, 0);
41  	cam.left_bottom = \
42  		vsub_v( \
43  			vsub_v( \
44  				vsub_v( \
45  					cam.origin, vdiv_d(cam.horizontal, 2)), \
46  				vdiv_d(cam.vertical, 2)), \
47  			vec3(0, 0, focal_len));
48  	return (cam);
49  }