ft: added cube

This commit is contained in:
2026-05-02 12:57:45 +02:00
parent e7018a84ed
commit c3d37f4758
6 changed files with 99 additions and 25 deletions

View File

@@ -35,7 +35,23 @@ impl Quad {
out.push(Sphere::new(self.p3, 1., self.material.clone()));
out.push(Sphere::new(self.p4, 1., self.material.clone()));
return out;
}
pub fn hit(
p1: Vec3,
p2: Vec3,
p3: Vec3,
p4: Vec3,
material: Arc<dyn Material>,
normal: Vec3,
r: &Ray,
) -> Option<Hit> {
let isct1 = Triangle::hit(p1, p2, p4, material.clone(), normal, r);
let isct2 = Triangle::hit(p2, p3, p4, material.clone(), normal, r);
if isct1.is_some() {
return isct1;
}
return isct2;
}
}
@@ -53,28 +69,15 @@ impl Debug for Quad {
impl Hittable for Quad {
fn hit(&self, r: &Ray) -> Option<Hit> {
let isct1 = Triangle::hit(
Quad::hit(
self.p1,
self.p2,
self.p4,
self.material.clone(),
self.normal,
r,
);
let isct2 = Triangle::hit(
self.p2,
self.p3,
self.p4,
self.material.clone(),
self.normal,
r,
);
if isct1.is_some() {
return isct1;
}
if isct2.is_some() {
}
return isct2;
)
}
fn normal_at(&self, _p: &Vec3) -> Vec3 {