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 }