|
Open PaperOpt
|
00001 #ifndef StructureObject_H 00002 #define StructureObject_H 00003 00004 #if _MSC_VER >= 1000 00005 #pragma once 00006 #endif // _MSC_VER >= 1000 00007 00008 #include <iostream> 00009 #include "WavePacket.h" 00010 #include <complex> 00011 #include <vector> 00012 #include "utilities.h" 00013 00014 //TODO: Use enum? 00015 #define SURFACE 1 00016 #define BASESHEET 2 00017 #define BASESHEET_S 3 //Used for basesheet that performs scattering upon entry itself 00018 #define BASESHEETSTATIC 4 //static basesheet 00019 00020 using namespace std; 00021 00029 class StructureObject 00030 { 00031 friend class Basesheet; 00032 00033 public: 00034 00035 StructureObject(); 00040 StructureObject(StructureObject *) ; 00041 virtual ~StructureObject(); 00042 00050 int PropInLayer(WavePacket& wp, double& t_vector_init, bool& rBoundary); 00051 00052 00058 virtual int Process(WavePacket & wp, int up_down,int internal) const =0; 00059 00065 void mSetTypeObj(int typobj){mTypeObj = typobj;} 00071 int mGetType_obj() const {return mTypeObj;} 00072 00078 virtual complex_LC mGetRefrIndex(int nbr) const {return mpRefrIndex[nbr];} 00079 00084 const StructureObject* mGetPrevious () const {return m_previous ; } 00085 const StructureObject* mGetNext () const {return m_next ; } 00086 00090 void DeleteList (void) ; 00091 00096 const StructureObject *m_previous ; 00097 const StructureObject *m_next ; 00098 00099 protected: 00105 vector<complex_LC> mpRefrIndex; 00109 float mXMin, mXMax, mYMin, mYMax; 00114 long mIterationLimit; 00120 int mTypeObj; 00121 }; 00122 00123 #endif