diff options
author | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2025-03-03 04:23:27 +0700 |
---|---|---|
committer | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2025-03-03 04:23:27 +0700 |
commit | 3fe52d7b88f1e99bcffc5ea31e3e2cf9fcacec6d (patch) | |
tree | bc53f29dec30b12d6135fbf6dbea0aa1f225cdec | |
parent | 8eec1dd60e966f068cd62fba87ca5dbc1aeb1978 (diff) |
camera
-rw-r--r-- | src/camera.rs | 17 | ||||
-rw-r--r-- | src/common.rs | 4 |
2 files changed, 10 insertions, 11 deletions
diff --git a/src/camera.rs b/src/camera.rs index 033f962..e58c13e 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -1,7 +1,6 @@ use crate::calculus::calculus::{deg2rad, sample_square, Point3, Ray, Vec3}; -use crate::common::{get_image_height, Color, DisplayBuffer, Pixel, ASPECT_RATIO, CAMERA_CENTER, FOCAL_LENGTH, IMG_WIDTH, LOOK_AT, LOOK_FROM, MAX_DEPTH, SAMPLES_PER_PIXEL, VFOV, VIEWPORT_HEIGHT, VUP}; +use crate::common::{get_image_height, Color, DisplayBuffer, Pixel, ASPECT_RATIO, IMG_WIDTH, LOOK_AT, LOOK_FROM, MAX_DEPTH, SAMPLES_PER_PIXEL, VFOV, VUP}; use crate::interval::Interval; -use crate::material::{Material, MaterialType}; use crate::object::{HitRecord, Hittable, HittableList}; pub struct Camera { @@ -48,18 +47,18 @@ impl Default for Camera { let viewport_height = 2.0 * h * focal_length; let viewport_width = viewport_height * (image_width as f32 / image_height as f32); - let viewport_hor_vector = u.scalar_mul(viewport_height); - let viewport_ver_vector = v.scalar_mul(-1.0 * viewport_width); + let viewport_u = u.scalar_mul(viewport_width); + let viewport_v = v.scalar_mul(-1.0).scalar_mul(viewport_height); - let delta_pixel_u = viewport_hor_vector.scalar_mul(1.0 / image_width as f32); - let delta_pixel_v = viewport_ver_vector.scalar_mul(1.0 / image_height as f32); + let delta_pixel_u = viewport_u.scalar_mul(1.0 / image_width as f32); + let delta_pixel_v = viewport_v.scalar_mul(1.0 / image_height as f32); let viewport_upper_left = center .sub(&w.scalar_mul(focal_length)) - .sub(&viewport_hor_vector.scalar_mul(0.5)) - .sub(&viewport_ver_vector.scalar_mul(0.5)); + .sub(&viewport_u.scalar_mul(0.5)) + .sub(&viewport_v.scalar_mul(0.5)); let pixel_upper_left = viewport_upper_left.add( - &delta_pixel_u.add(&delta_pixel_u).scalar_mul(0.5) + &delta_pixel_u.add(&delta_pixel_v).scalar_mul(0.5) ); let max_depth = MAX_DEPTH; diff --git a/src/common.rs b/src/common.rs index 75bf600..69f9a48 100644 --- a/src/common.rs +++ b/src/common.rs @@ -13,8 +13,8 @@ pub const CAMERA_CENTER: Point3 = Point3 { x: 0.0, y: 0.0, z: 0.0 }; pub const SAMPLES_PER_PIXEL: usize = 100; pub const MAX_DEPTH: usize = 50; -pub const VFOV: f32 = 90.0; -pub const LOOK_FROM: Point3 = Point3 { x: -2.0, y: -2.0, z: 1.0 }; +pub const VFOV: f32 = 30.0; +pub const LOOK_FROM: Point3 = Point3 { x: -2.0, y: 2.0, z: 1.0 }; pub const LOOK_AT: Point3 = Point3 { x: 0.0, y: 0.0, z: -1.0 }; pub const VUP: Vec3 = Vec3 { x: 0.0, y: 1.0, z: 0.0 }; |