00001
00005 #pragma once
00006
00007 #include <usml/waveq3d/wave_queue.h>
00008
00009 namespace usml {
00010 namespace waveq3d {
00011
00012 using namespace usml::ocean ;
00013
00020 class USML_DECLSPEC spreading_model {
00021
00022 friend class wave_queue ;
00023
00024 protected:
00025
00027 wave_queue& _wave ;
00028
00030 vector<double> _spread ;
00031
00038 spreading_model( wave_queue& wave, size_t num_freqs ) :
00039 _wave(wave), _spread(num_freqs)
00040 {}
00041
00045 virtual ~spreading_model() {}
00046
00057 virtual const vector<double>& intensity(
00058 const wposition1& location, size_t de, size_t az,
00059 const vector<double>& offset, const vector<double>& distance ) = 0 ;
00060
00069 virtual double width_de(
00070 size_t de, size_t az, const vector<double>& offset ) = 0 ;
00071
00080 virtual double width_az(
00081 size_t de, size_t az, const vector<double>& offset ) = 0 ;
00082 } ;
00083
00084 }
00085 }