spreading_ray | ( | wave_queue & | wave | ) | [protected] |
Estimate initial ensonfied area between rays at radius of 1 meter.
where:
wave | Wavefront object associated with this model. |
virtual ~spreading_ray | ( | ) | [inline, protected, virtual] |
Virtual destructor.
const vector< double > & intensity | ( | const wposition1 & | location, | |
size_t | de, | |||
size_t | az, | |||
const vector< double > & | offset, | |||
const vector< double > & | distance | |||
) | [protected, virtual] |
Estimate intensity as the ratio of current area to initial area.
Approximates the area as the sum of two triangles that connect the corner points.
Extrapolates across edges in the wavefront by keeping a constant level for three (3) extra beam widths. This compensates for the fact that the detection scheme used by wavefront.on_edges() may leave the closest valid wavefront segment may be up to 1 1/2 segments away from the actual edge. A failure to properly take this into account will show up as weak eignerays near the surface, bottom, or caustics.
location | Target location. | |
de | DE index of closest point of approach. | |
az | AZ index of closest point of approach. | |
offset | Offsets in time, DE, and AZ at collision. | |
distance | Offsets in distance units. |
Implements spreading_model.
double width_az | ( | size_t | de, | |
size_t | az, | |||
const vector< double > & | offset | |||
) | [protected, virtual] |
Compute the harmonic mean of the distance between the position on the wavefront that is AZ+1 and AZ-1 from AZ.
Divides the result by 1/2, as the width of the gaussian cell is half of the distance.
de | DE index of contributing cell. | |
az | AZ index of contributing cell. | |
offset | (Not used in this calculation) |
Divides the result by 1/2, as the width of the gaussian cell is half of the distance.
Implements spreading_model.
double width_de | ( | size_t | de, | |
size_t | az, | |||
const vector< double > & | offset | |||
) | [protected, virtual] |
Compute the harmonic mean of the distance between the position on the wavefront that is DE+1 and DE-1 from DE.
Divides the result by 1/2, as the width of the gaussian cell is half of the distance.
de | DE index of contributing cell. | |
az | AZ index of contributing cell. | |
offset | (Not used in this calculation) |
Divides the result by 1/2, as the width of the gaussian cell is half of the distance.
Implements spreading_model.
friend class wave_queue [friend] |
Reimplemented from spreading_model.
friend class wave_queue_reverb [friend] |
matrix<double> _init_area [private] |
Initial ensonified area for each ray span.
Assign the area for each span to the index of the ray that precedes it in D/E and azimuth. Copy the last element in each direction from the one before it. Divide the initial area by the initial speed of sound so that we don't have to do this each time intensity is calculated.