USML
reflection_model.h
1 
5 #ifndef USML_WAVEQ3D_REFLECTION_MODEL_H
6 #define USML_WAVEQ3D_REFLECTION_MODEL_H
7 
8 #include <usml/waveq3d/wave_queue.h>
9 
10 namespace usml {
11 namespace waveq3d {
12 
13 using namespace usml::ocean ;
14 class wave_queue ; // forward reference for friend declaration
15 
49 class USML_DECLSPEC reflection_model {
50 
51  friend class wave_queue ;
52 
53  private:
54 
57 
60 
63 
78  const double TOO_SHALLOW ;
79 
91  static const double MIN_REFLECT ;
92 
97  : _wave( wave ), _bottom_reverb(0), _surface_reverb(0),
98  TOO_SHALLOW( 300.0 * wave._time_step )
99  {}
100 
145  bool bottom_reflection( unsigned de, unsigned az, double depth ) ;
146 
181  bool surface_reflection( unsigned de, unsigned az ) ;
182 
197  void collision_location(
198  unsigned de, unsigned az, double dtime,
199  wposition1* position, wvector1* ndirection, double* speed ) const ;
200 
215  void reflection_reinit(
216  unsigned de, unsigned az, double dtime,
217  const wposition1& position, const wvector1& direction, double speed ) ;
218 
229  static void reflection_copy(
230  wave_front* element, unsigned de, unsigned az,
231  wave_front& results ) ;
232 } ;
233 
234 } // end of namespace waveq3d
235 } // end of namespace usml
236 
237 #endif
reflection_model(wave_queue &wave)
Hide default constructor to prohibit use by non-friends.
Definition: reflection_model.h:96
reverb_model * _surface_reverb
Callback model for surface reverberation.
Definition: reflection_model.h:62
Wavefront characteristics at a specific point in time.
Definition: wave_front.h:68
Wavefront propagator for the WaveQ3D model.
Definition: wave_queue.h:63
Individual world vector in spherical earth coordinates.
Definition: wvector1.h:27
wave_queue & _wave
Wavefront object associated with this model.
Definition: reflection_model.h:56
Definition: reflection_model.h:49
A reverberation model listens for interface collision callbacks from a wavefront. ...
Definition: reverb_model.h:24
World location in geodetic earth coordinates (latitude, longitude, and altitude). ...
Definition: wposition1.h:23
const double TOO_SHALLOW
If the water is too shallow, bottom_reflection() uses a horizontal normal to simulate reflection from...
Definition: reflection_model.h:78
reverb_model * _bottom_reverb
Callback model for bottom reverberation.
Definition: reflection_model.h:59
static const double MIN_REFLECT
The assumption that the surface normal is constant across the time step breaks down when the incident...
Definition: reflection_model.h:91