2023-01-30 progress

This commit is contained in:
Michael Zhang 2023-01-31 01:48:57 -06:00
parent 0000006041
commit 000000700e
2 changed files with 31 additions and 4 deletions

View file

@ -1,13 +1,15 @@
mod input_file;
mod ray;
mod scene_data;
mod view;
mod vec3;
mod view;
use std::path::PathBuf;
use anyhow::Result;
use clap::Parser;
use vec3::Vec3;
use view::Rect;
use crate::input_file::parse_input_file;
@ -32,10 +34,24 @@ fn main() -> Result<()> {
let scene = parse_input_file(&opt.input_path)?;
// Loop through every single pixel of the output file
for (px, py) in (0..scene.image_width).zip(0..scene.image_height) {
// Compute viewing directions
let u = Vec3::cross(scene.view_dir, scene.up_dir).unit();
let v = Vec3::cross(u, scene.view_dir).unit();
}
// Compute viewing window corners
// TODO: See slide 101
// Also need to reverse calculation for d based on hfov
let n = scene.view_dir.unit();
let d = 1.0;
let view_window = Rect {
upper_left: scene.eye_pos + n * d, // + ...
upper_right: scene.eye_pos + n * d,
lower_left: scene.eye_pos + n * d,
lower_right: scene.eye_pos + n * d,
};
// Loop through every single pixel of the output file
for (px, py) in (0..scene.image_width).zip(0..scene.image_height) {}
Ok(())
}

View file

@ -16,6 +16,7 @@ impl<T> Vec3<T> {
}
impl<T: Float> Vec3<T> {
/// Cross product on floats
pub fn cross(u: Self, v: Self) -> Self {
Vec3::new(
u.y * v.z - u.z * v.y,
@ -23,6 +24,16 @@ impl<T: Float> Vec3<T> {
u.x * v.y - u.y * v.x,
)
}
pub fn norm(&self) -> T {
(self.x.powi(2) + self.y.powi(2) + self.z.powi(2)).sqrt()
}
/// Normalize
pub fn unit(&self) -> Self {
let norm = self.norm();
Vec3::new(self.x / norm, self.y / norm, self.z / norm)
}
}
/// Vector addition