NMPB08 Shared Libraries
|
00001 00008 #ifndef EMBANKMENT_H 00009 #define EMBANKMENT_H 00010 00011 #include "../PathStructures.h" 00012 00013 #ifndef _WIN32 00014 #define Embankment _Local_PROPAN8_Embankment_ 00015 #endif 00016 00017 namespace EmbankmentNMPB 00018 { 00025 class Embankment 00026 { 00027 public: 00028 00038 Embankment(vector<ProfilePointNMPB*> terrainItems, double freq); 00039 00043 ~Embankment(void) 00044 { 00045 if(_source) delete _source; 00046 if(_receiver) delete _receiver; 00047 if(_platformEnd) delete _platformEnd; 00048 if(_O1) delete _O1; 00049 if(_O2) delete _O2; 00050 if(_sourceImage) delete _sourceImage; 00051 } 00052 00058 double GetEmbankmentAttenuation() 00059 { 00060 return _embankmentAttenuation; 00061 } 00062 00068 Position2D* GetSourceImage() 00069 { 00070 return _sourceImage; 00071 } 00072 00073 protected: 00077 Position2D* _source; 00081 Position2D* _receiver; 00085 Position2D* _platformEnd; 00089 Position2D* _O1; 00093 Position2D* _O2; 00097 Position2D* _sourceImage; 00101 double _angleAlpha; 00105 double _Gembankment; 00109 double _embankmentAttenuation; 00110 00120 void FillPosInPerpendicularPlane(Position2D* posToFill, Position2D const* posToRead, double cosTheta); 00121 00132 bool DataInPerpendicularPlane(vector<ProfilePointNMPB*> terrainItems); 00133 00143 bool CheckData(vector<ProfilePointNMPB*> terrainItems); 00144 00159 bool LineCoeff(Position2D const* pos1, Position2D const* pos2, double &aCoef, double &bCoef); 00160 00170 void SourceImage(double aCoef, double bCoef, bool verticalSlope); 00171 00191 bool LinesIntersection(double a1, double b1, bool vert1, double a2, double b2, bool vert2, Position2D* Ipoint); 00192 00198 double ThetaAngle(); 00199 00215 double HalfLength(double cosAngleTheta, double freq, double SimageI, double IR); 00216 00224 void EmbankmentCalculation(Position2D const* intersect, double freq); 00225 }; 00226 } 00227 00228 #endif