programing

c의 레이트레이스에서의 카메라 셋업

yoursource 2022. 11. 2. 23:40
반응형

c의 레이트레이스에서의 카메라 셋업

레이트레이싱으로 카메라를 세팅했는데 구면을 그리려고 하면 카메라를 0.0.0 원점으로 놓아도 물체가 원점에서 멀어집니다.

그게 내 코드야

t_camera    camera(t_canvas *canvas, t_scene *sc)
{
    t_camera    cam;
    double      focal_len;
    double      viewport_height;

    viewport_height = tan(sc->cam.fov * 13.14 / 180);
    focal_len = 1.0;
    cam.orig = sc->cam.cen;
   cam.viewport_h = viewport_height;
   cam.viewport_w = viewport_height * canvas->aspect_ratio;
   cam.focal_len = focal_len;
   cam.horizontal = make_vec(cam.viewport_w, 0, 0);
   cam.vertical = make_vec(0, cam.viewport_h, 0);
   // left corner, origin - horizontal / 2 - vertical / 2 - vec3(0,0,focal_length)
   cam.left_bottom = sub_vec(sub_vec(sub_vec(cam.orig, div_vect(cam.horizontal, 2)),
                            div_vect(cam.vertical, 2)), make_vec(0, 0, focal_len));
   return (cam);
}

sub_vec은 벡터의 빼기이고 div_vect는 벡터를 나누는 것입니다.누구라도 도와주세요.

언급URL : https://stackoverflow.com/questions/73598616/camera-setup-in-ray-tracing-in-c

반응형