summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosyid Haryadi <rosyid_haryadi@protonmail.com>2025-03-03 04:23:27 +0700
committerRosyid Haryadi <rosyid_haryadi@protonmail.com>2025-03-03 04:23:27 +0700
commit3fe52d7b88f1e99bcffc5ea31e3e2cf9fcacec6d (patch)
treebc53f29dec30b12d6135fbf6dbea0aa1f225cdec
parent8eec1dd60e966f068cd62fba87ca5dbc1aeb1978 (diff)
camera
-rw-r--r--src/camera.rs17
-rw-r--r--src/common.rs4
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 };