21 double hr,
double dp)
const
24 double Kgeo = (dp * dp + (hs - hr) * (hs - hr)) / (dp * dp + (hs + hr) * (hs + hr));
27 s =
s.exp(std::log(10));
28 s = (
s + (-1.0)) * Kgeo + 1.0;
29 s =
s.log() * (-10.0);
43 const double ny = nCopy.getCoords()[1];
47 if (OSvec.scalar(nConventional) < 0.)
49 nConventional.invert();
63 const double OSvecHorizontalT = OSvec.scalar(tHorizontal);
64 const double OSvecN = OSvec.scalar(nConventional);
65 const OVector3D OSvecHorizontal = tHorizontal * OSvecHorizontalT + nConventional * OSvecN;
66 const double dSOHorizontal = OSvecHorizontal.
norme();
67 const double cos_beta_a = OSvecN / dSOHorizontal;
70 const double OSvecVerticalT = OSvec.scalar(tVertical);
71 const OVector3D OSvecVertical = tVertical * OSvecVerticalT + nConventional * OSvecN;
72 const double dSOVertical = OSvecVertical.
norme();
73 const double cos_beta_h = OSvecN / dSOVertical;
76 const double l_eff =
std::min(a * cos_beta_a, h * cos_beta_h);
79 const double d_SO = OSvec.norme();
81 const double d_OR = ORvec.norme();
84 const double c_9613_2 = 340.0;
86 const double fThreshold = c_9613_2 * (2. / (l_eff * l_eff)) * (d_SO * d_OR) / (d_SO + d_OR);
91 for (
unsigned int i = 0; i < frequencies.size(); i++)
93 if (frequencies[i] > fThreshold)
95 filter.getTabValReel()[i] = 1.;
Representation of one of the most optimal path between source and receptor: S—>R Specific derivation ...
void getCoords(double coords[3])
Gets the coordinates as an array of double.
static OTabFreq getTabFreqExact()
double norme() const
Computes the length of this vector.
void normalize()
Normalizes this vector.
OVector3D cross(const OVector3D &vector) const
Cross product.
OSpectreOctave calcTotalGroundAttenuation(const OSpectreOctave &Agr_s, const OSpectreOctave &Agr_r, const OSpectreOctave &Agr_m, double hs, double hr, double dp) const override
Compute total ground attenuation Agr from region ground attenuations and geometric configuration.
OSpectreOctave calcMinimalExtensionConditionOneReflection(const OPoint3D &S, const OPoint3D &O, const OPoint3D &R, double a, double h, const OVector3D &n) const override
Evaluate minimal extension condition for a specular reflection on a flat surface in function of the w...
virtual OSpectreOctave calcTotalGroundAttenuation(const OSpectreOctave &Agr_s, const OSpectreOctave &Agr_r, const OSpectreOctave &Agr_m, double hs, double hr, double dp) const
Compute total ground attenuation Agr from region ground attenuations and geometric configuration.
std::vector< double > OTabFreq
Frequencies collection.