ft: 6.5: hitlist

This commit is contained in:
djaidjai committed 2026-04-15 13:57:43 +02:00
1 parent 3a660f900a
commit 583b67f4f4
5 files changed
+23 -26

No files matched your search

+14 -1
View File
@@ -1,4 +1,4 @@
use crate::vec3::Vec3;
use crate::{objects::traits::Hittable, ray::Ray, vec3::Vec3};
pub struct Hit {
t: f32,
@@ -22,4 +22,17 @@ impl Hit {
pub fn n(&self) -> &Vec3 {
&self.n
}
pub fn hit_list<T: Hittable>(hittables: &Vec<T>, r: &Ray) -> Option<Hit> {
let mut closest: Option<Hit> = None;
for hittable in hittables {
if let Some(hit) = hittable.hit(r) {
// hit happens in front of camera and is closer than closest
if *hit.t() > 0. && (closest.is_none() || closest.as_ref().unwrap().t() > hit.t()) {
closest = Some(hit);
}
}
}
return closest;
}
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.