mise a la norme
This commit is contained in:
+10
-10
@@ -6,7 +6,7 @@
|
||||
/* By: yantoine <yantoine@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/17 18:54:45 by yantoine #+# #+# */
|
||||
/* Updated: 2025/02/19 16:59:10 by yantoine ### ########.fr */
|
||||
/* Updated: 2025/03/05 14:23:21 by yantoine ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -40,13 +40,13 @@ int init_intersection(t_ray ray, t_cylinder cy, t_calc *calc)
|
||||
void compute_side_intersection(t_cylinder cy, t_calc *calc)
|
||||
{
|
||||
calc->t_side = -1;
|
||||
if (calc->t0 > 1e-3f)
|
||||
if (calc->t0 > 0.001f)
|
||||
{
|
||||
calc->y = calc->oc_dot_v + calc->t0 * calc->d_dot_v;
|
||||
if (fabs(calc->y) <= cy.height / 2.0f)
|
||||
calc->t_side = calc->t0;
|
||||
}
|
||||
if (calc->t_side < 0 && calc->t1 > 1e-3f)
|
||||
if (calc->t_side < 0 && calc->t1 > 0.001f)
|
||||
{
|
||||
calc->y = calc->oc_dot_v + calc->t1 * calc->d_dot_v;
|
||||
if (fabs(calc->y) <= cy.height / 2.0f)
|
||||
@@ -59,10 +59,10 @@ void compute_side_intersection(t_cylinder cy, t_calc *calc)
|
||||
void compute_cap_intersection(t_ray ray, t_cylinder cy, t_calc *calc)
|
||||
{
|
||||
calc->t_cap = -1;
|
||||
if (fabs(calc->d_dot_v) > 1e-6f)
|
||||
if (fabs(calc->d_dot_v) > 0.001f)
|
||||
{
|
||||
calc->t_bot = ((-cy.height / 2.0f) - calc->oc_dot_v) / calc->d_dot_v;
|
||||
if (calc->t_bot > 1e-3f)
|
||||
if (calc->t_bot > 0.001f)
|
||||
{
|
||||
calc->p = vec3_add(ray.origin, vec3_scale(calc->d, calc->t_bot));
|
||||
calc->cp = vec3_sub(calc->p, cy.center);
|
||||
@@ -72,7 +72,7 @@ void compute_cap_intersection(t_ray ray, t_cylinder cy, t_calc *calc)
|
||||
calc->t_cap = calc->t_bot;
|
||||
}
|
||||
calc->t_top = ((cy.height / 2.0f) - calc->oc_dot_v) / calc->d_dot_v;
|
||||
if (calc->t_top > 1e-3f)
|
||||
if (calc->t_top > 0.001f)
|
||||
{
|
||||
calc->p = vec3_add(ray.origin, vec3_scale(calc->d, calc->t_top));
|
||||
calc->cp = vec3_sub(calc->p, cy.center);
|
||||
@@ -89,18 +89,18 @@ void compute_cap_intersection(t_ray ray, t_cylinder cy, t_calc *calc)
|
||||
//proche entre la surface latérale et les capuchons
|
||||
float select_final_intersection(t_calc *calc)
|
||||
{
|
||||
if (calc->t_side > 1e-3f && calc->t_cap > 1e-3f)
|
||||
if (calc->t_side > 0.001f && calc->t_cap > 0.001f)
|
||||
{
|
||||
if (calc->t_side < calc->t_cap)
|
||||
calc->t_final = calc->t_side;
|
||||
else
|
||||
calc->t_final = calc->t_cap;
|
||||
}
|
||||
else if (calc->t_side > 1e-3f)
|
||||
else if (calc->t_side > 0.001f)
|
||||
calc->t_final = calc->t_side;
|
||||
else
|
||||
calc->t_final = calc->t_cap;
|
||||
if (calc->t_final > 1e-3f)
|
||||
if (calc->t_final > 0.001f)
|
||||
return (calc->t_final);
|
||||
return (-1);
|
||||
}
|
||||
@@ -112,7 +112,7 @@ void compute_hit_normal(t_ray ray, t_cylinder cy, t_calc *calc,
|
||||
calc->hit_point = vec3_add(ray.origin, vec3_scale(calc->d, calc->t_final));
|
||||
calc->cp = vec3_sub(calc->hit_point, cy.center);
|
||||
calc->proj = vec3_dot(calc->cp, calc->v);
|
||||
if (fabs(calc->proj) < cy.height / 2.0f - 1e-3f)
|
||||
if (fabs(calc->proj) < cy.height / 2.0f - 0.001f)
|
||||
{
|
||||
calc->n = vec3_sub(calc->cp, vec3_scale(calc->v, calc->proj));
|
||||
*hitNormal = vec3_normalize(calc->n);
|
||||
|
||||
Reference in New Issue
Block a user