aboutsummaryrefslogtreecommitdiff
path: root/src/camera.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/camera.rs')
-rw-r--r--src/camera.rs23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/camera.rs b/src/camera.rs
index 55bf387..52c2011 100644
--- a/src/camera.rs
+++ b/src/camera.rs
@@ -1,6 +1,6 @@
use crate::ray::Ray;
-use crate::vec3::{Point3, Vec3};
use crate::util::degrees_to_radians;
+use crate::vec3::{Point3, Vec3};
pub struct Camera {
origin: Point3,
@@ -16,7 +16,17 @@ pub struct Camera {
}
impl Camera {
- pub fn new(lookfrom: Point3, lookat: Point3, vup: Vec3, vfov: f64, aspect_ratio: f64, aperture: f64, focus_dist: f64, time_start: f64, time_end: f64) -> Camera {
+ pub fn new(
+ lookfrom: Point3,
+ lookat: Point3,
+ vup: Vec3,
+ vfov: f64,
+ aspect_ratio: f64,
+ aperture: f64,
+ focus_dist: f64,
+ time_start: f64,
+ time_end: f64,
+ ) -> Camera {
let theta = degrees_to_radians(vfov);
let h = (theta / 2.0).tan();
let viewport_height = 2.0 * h;
@@ -30,10 +40,7 @@ impl Camera {
let horizontal = focus_dist * viewport_width * &u;
let vertical = focus_dist * viewport_height * &v;
Camera {
- lower_left_corner: &origin
- - &horizontal / 2.0
- - &vertical / 2.0
- - focus_dist * &w,
+ lower_left_corner: &origin - &horizontal / 2.0 - &vertical / 2.0 - focus_dist * &w,
origin,
horizontal,
vertical,
@@ -51,7 +58,9 @@ impl Camera {
let offset = &self.u * rd.x + &self.v * rd.y;
Ray {
origin: &self.origin + &offset,
- direction: &self.lower_left_corner + s * &self.horizontal + t * &self.vertical - &self.origin - &offset,
+ direction: &self.lower_left_corner + s * &self.horizontal + t * &self.vertical
+ - &self.origin
+ - &offset,
time: self.time_start + (self.time_end - self.time_start) * rand::random::<f64>(),
}
}