00001
00005 #pragma once
00006
00007 #include <usml/waveq3d/spreading_model.h>
00008
00009 namespace usml {
00010 namespace waveq3d {
00011
00012 using namespace usml::ocean ;
00013
00032 class USML_DECLSPEC spreading_ray : public spreading_model {
00033
00034 friend class wave_queue ;
00035 friend class wave_queue_reverb ;
00036
00037 private:
00038
00046 matrix<double> _init_area ;
00047
00048 protected:
00049
00066 spreading_ray( wave_queue& wave ) ;
00067
00071 virtual ~spreading_ray() {}
00072
00092 virtual const vector<double>& intensity(
00093 const wposition1& location, size_t de, size_t az,
00094 const vector<double>& offset, const vector<double>& distance ) ;
00095
00106 virtual double width_de(
00107 size_t de, size_t az, const vector<double>& offset ) ;
00108
00119 virtual double width_az(
00120 size_t de, size_t az, const vector<double>& offset ) ;
00121
00122 } ;
00123
00124 }
00125 }