temp test other way of writting ray end calcul
This commit is contained in:
@@ -60,6 +60,7 @@ static void next_cell(t_rcast *rcast)
|
|||||||
|
|
||||||
static void calcul_ray_end(t_rcast *rcast, t_vec *ray)
|
static void calcul_ray_end(t_rcast *rcast, t_vec *ray)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
if (rcast->is_x)
|
if (rcast->is_x)
|
||||||
{
|
{
|
||||||
ray->end.x = rcast->cell_x * rcast->cell;
|
ray->end.x = rcast->cell_x * rcast->cell;
|
||||||
@@ -82,6 +83,43 @@ static void calcul_ray_end(t_rcast *rcast, t_vec *ray)
|
|||||||
ray->end.x = ray->start.x + (double)rcast->slope_x * rcast->ratio;
|
ray->end.x = ray->start.x + (double)rcast->slope_x * rcast->ratio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
int *nd1;
|
||||||
|
int *cell1;
|
||||||
|
int *sign1;
|
||||||
|
int *st1;
|
||||||
|
int *slp1;
|
||||||
|
int *nd2;
|
||||||
|
int *st2;
|
||||||
|
int *slp2;
|
||||||
|
|
||||||
|
if (rcast->is_x)
|
||||||
|
{
|
||||||
|
nd1 = &(ray->end.x);
|
||||||
|
cell1 = &(rcast->cell_x);
|
||||||
|
sign1 = &(rcast->ray_sign_x);
|
||||||
|
st1 = &(ray->start.x);
|
||||||
|
slp1 = &(rcast->slope_x);
|
||||||
|
nd2 = &(ray->end.y);
|
||||||
|
st2 = &(ray->start.y);
|
||||||
|
slp2 = &(rcast->slope_y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nd1 = &(ray->end.y);
|
||||||
|
cell1 = &(rcast->cell_y);
|
||||||
|
sign1 = &(rcast->ray_sign_y);
|
||||||
|
st1 = &(ray->start.y);
|
||||||
|
slp1 = &(rcast->slope_y);
|
||||||
|
nd2 = &(ray->end.x);
|
||||||
|
st2 = &(ray->start.x);
|
||||||
|
slp2 = &(rcast->slope_x);
|
||||||
|
}
|
||||||
|
*nd1 = *cell1 * rcast->cell;
|
||||||
|
if (*sign1 == 1)
|
||||||
|
*nd1 += rcast->cell;
|
||||||
|
if (*slp1)
|
||||||
|
*nd2 = *st2 + (double)(*slp2) * (double)(*nd1 - *st1) / (double)(*slp1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ray_intersect(t_game *game, t_rcast *rcast, t_vec *ray)
|
void ray_intersect(t_game *game, t_rcast *rcast, t_vec *ray)
|
||||||
|
|||||||
Reference in New Issue
Block a user