00001
00005 #pragma once
00006
00007 #include <usml/ocean/ocean.h>
00008 #include <usml/waveq3d/wave_queue.h>
00009
00010 namespace usml {
00011 namespace waveq3d {
00012
00013 using namespace usml::ocean ;
00014
00015 using namespace boost::numeric::ublas ;
00016
00023 class USML_DECLSPEC reverberation_model {
00024
00025 public:
00026
00030 virtual ~reverberation_model() {}
00031
00046 virtual void notifyUpperCollision( size_t de, size_t az,
00047 double dt, double grazing, double speed,
00048 const wposition1& position, const wvector1& ndirection,
00049 const wave_queue& wave, size_t ID ) = 0 ;
00050
00065 virtual void notifyLowerCollision( size_t de, size_t az,
00066 double dt, double grazing, double speed,
00067 const wposition1& position, const wvector1& ndirection,
00068 const wave_queue& wave, size_t ID ) = 0 ;
00069
00074 virtual void compute_reverberation() = 0 ;
00075
00079 virtual const vector<double> getReverberation_curve() = 0 ;
00080
00081 };
00082
00084 }
00085 }