28 #include "Geometry/mathlib.h"
30 #ifndef UNIFORM_BEAM_SAMPLER
31 #define UNIFORM_BEAM_SAMPLER
69 const vec3& directivity =
vec3(0, 0, 1))
71 _radius(0.), _alpha(alpha / 2), _directivity(directivity), _i(0), _j(0),
72 _repere(
Repere(
vec3(1., 0., 0.),
vec3(0., 1., 0.),
vec3(0., 0., 1.),
vec3(0., 0., 0.)))
87 _repere =
Repere(
vec3(1., 0., 0.),
vec3(0., 1., 0.),
vec3(0., 0., 1.),
vec3(0., 0., 0.));
101 _repere =
Repere(
vec3(1., 0., 0.),
vec3(0., 1., 0.),
vec3(0., 0., 1.),
vec3(0., 0., 0.));
117 _radius = sin(_i * _phi);
119 _slice_rays =
static_cast<int>(floor(perimeter / _phi));
128 if (_i > _slices || _nb_rays == 0)
129 return vec3(0., 0., 0.);
131 vec3 res(0., 0., 1.);
136 res =
vec3(cos(_j * _theta) * _radius,
137 sin(_j * _theta) * _radius,
142 if (_j >= _slice_rays)
147 return _repere.vectorFromLocalToGlobal(
154 return acos(v * _directivity) <= (_alpha +
EPSILON_5);
159 find_number_of_slices();
163 ax1.cross(_directivity);
166 vec3 ax2 = _directivity;
172 _repere =
Repere(ax1, ax2, _directivity,
vec3(0., 0., 0.));
178 return _real_nb_rays;
197 _directivity = Directivity;
211 return static_cast<int>(floor(p / _phi));
218 _real_nb_rays = _nb_rays;
220 for (
unsigned int i = 1; i < _nb_rays; i++)
228 for (
unsigned int j = 1; j <= _slices; j++)
233 _real_nb_rays +=
static_cast<int>(
237 if (_real_nb_rays >= _nb_rays)
Sampler class and its sub-classes describe ray generators used in AcousticRayTracer....
base_vec3< decimal > vec3