Example #1
0
static int find_delta_children(const union delta_base *base,
			       int *first_index, int *last_index)
{
	int first = find_delta(base);
	int last = first;
	int end = nr_deltas - 1;

	if (first < 0)
		return -1;
	while (first > 0 && !memcmp(&deltas[first - 1].base, base, UNION_BASE_SZ))
		--first;
	while (last < end && !memcmp(&deltas[last + 1].base, base, UNION_BASE_SZ))
		++last;
	*first_index = first;
	*last_index = last;
	return 0;
}
Example #2
0
static void find_delta_children(const union delta_base *base,
				int *first_index, int *last_index,
				enum object_type type)
{
	int first = find_delta(base, type);
	int last = first;
	int end = nr_deltas - 1;

	if (first < 0) {
		*first_index = 0;
		*last_index = -1;
		return;
	}
	while (first > 0 && !memcmp(&deltas[first - 1].base, base, UNION_BASE_SZ))
		--first;
	while (last < end && !memcmp(&deltas[last + 1].base, base, UNION_BASE_SZ))
		++last;
	*first_index = first;
	*last_index = last;
}
void	calcul_cone(t_loop *data, t_info *cone, int i)
{
  data->delta.a =
    pow(data->ray.vec_x, 2) + pow(data->ray.vec_z, 2)
    - pow(data->ray.vec_y, 2)
    * pow(tan(M_PI * cone->cone[i].angle / 180), 2);
  data->delta.b =
    (2 * (data->pos_x - cone->cone[i].pos_x) * data->ray.vec_x)
    + (2 * (data->pos_z - cone->cone[i].pos_z) * data->ray.vec_z)
    - (2 * (data->pos_y - cone->cone[i].pos_y)  * data->ray.vec_y)
    * pow(tan(M_PI * cone->cone[i].angle / 180), 2);
  data->delta.c =
    pow(data->pos_x - cone->cone[i].pos_x, 2)
    + pow(data->pos_z - cone->cone[i].pos_z, 2)
    - pow(data->pos_y - cone->cone[i].pos_y, 2)
    * pow(tan(M_PI * cone->cone[i].angle / 180) , 2);
  data->delta.delta = pow(data->delta.b, 2) -
    4 * data->delta.a * data->delta.c;
  if (find_delta(data) == 2)
    find_cone(data, i);
}