reflection_model.h

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 class wave_queue ;      // forward reference for friend declaration
00014 
00045 class USML_DECLSPEC reflection_model
00046 {
00047 
00048     friend class wave_queue ;
00049 
00050   private:
00051 
00053     wave_queue& _wave ;
00054 
00068     const double TOO_SHALLOW ;
00069 
00081     static const double MIN_REFLECT ;
00082 
00086     reflection_model( wave_queue& wave )
00087         : _wave( wave ),
00088           TOO_SHALLOW( 300.0 * wave._time_step )
00089         {}
00090 
00091     virtual ~reflection_model() {}
00092 
00137     bool bottom_reflection( size_t de, size_t az, double depth ) ;
00138 
00173     bool surface_reflection( size_t de, size_t az ) ;
00174 
00189     void collision_location(
00190         size_t de, size_t az, double dtime,
00191         wposition1* position, wvector1* ndirection, double* speed ) const ;
00192 
00207     void reflection_reinit(
00208         size_t de, size_t az, double dtime,
00209         const wposition1& position, const wvector1& direction, double speed ) ;
00210 
00221     static void reflection_copy(
00222         wave_front* element, size_t de, size_t az,
00223         wave_front& results ) ;
00224 } ;
00225 
00226 }  // end of namespace waveq3d
00227 }  // end of namespace usml

Generated on 4 May 2015 for USML by  doxygen 1.6.1