00001
00005 #pragma once
00006
00007 #include <usml/ocean/scattering_model.h>
00008
00009 namespace usml {
00010 namespace ocean {
00011
00012 using namespace usml::ublas;
00013 using namespace usml::types;
00014
00015 using boost::numeric::ublas::vector;
00016
00019
00024 class USML_DECLSPEC scattering_constant: public scattering_model {
00025
00026 public:
00027
00034 scattering_constant( double amplitude=-300.0 ) :
00035 _amplitude( pow(10.0,amplitude/10.0) ) {}
00036
00048 virtual void scattering(const wposition1& location,
00049 const seq_vector& frequencies, double de_incident,
00050 double de_scattered, double az_incident, double az_scattered,
00051 vector<double>* amplitude)
00052 {
00053 noalias(*amplitude) = scalar_vector<double>( frequencies.size(), _amplitude );
00054
00055 }
00056
00072 virtual void scattering( const wposition& location,
00073 const seq_vector& frequencies, double de_incident, matrix<double> de_scattered,
00074 double az_incident, matrix<double> az_scattered,
00075 matrix< vector<double> >* amplitude )
00076 {
00077
00078 noalias(*amplitude) = scalar_matrix< vector<double> >(
00079 location.size1(), location.size2(),
00080 scalar_vector<double>( frequencies.size(), _amplitude ) );
00081
00082 }
00083
00084 private:
00085
00087 double _amplitude ;
00088
00089 };
00090
00092 }
00093 }