feat: Iterate over objects to find first hit

Closes #2
This commit is contained in:
Tibo De Peuter 2024-10-04 21:07:10 +02:00
parent fab5318da7
commit 5f296ba39a
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2

View file

@ -1,16 +1,30 @@
#include "first_hit.h"
bool first_hit(
const Ray & ray,
const double min_t,
const std::vector< std::shared_ptr<Object> > & objects,
int & hit_id,
double & t,
Eigen::Vector3d & n)
const Ray & ray,
const double min_t,
const std::vector< std::shared_ptr<Object> > & objects,
int & hit_id,
double & t,
Eigen::Vector3d & n)
{
////////////////////////////////////////////////////////////////////////////
// Replace with your code here:
return false;
////////////////////////////////////////////////////////////////////////////
bool hit = false;
t = -1;
double t_temp;
Eigen::Vector3d n_temp;
for (int i = 0; i < objects.size(); ++i) {
if (objects[i]->intersect(ray, min_t, t_temp, n_temp)) {
hit = true;
if (t == -1 || t_temp < t) {
hit_id = i;
t = t_temp;
n = n_temp;
}
}
}
return hit;
}