|
Open PaperOpt
|
00001 // HomogeneousLayer.h: interface for the HomogeneousLayer class. 00002 // 00004 00005 #if !defined(AFX_HOMOGENEOUSLAYER_H__BBD9DA53_6E51_11D6_8061_00609705562A__INCLUDED_) 00006 #define AFX_HOMOGENEOUSLAYER_H__BBD9DA53_6E51_11D6_8061_00609705562A__INCLUDED_ 00007 00008 #if _MSC_VER >= 1000 00009 #pragma once 00010 #endif // _MSC_VER >= 1000 00011 00012 #include "Surface.h" 00013 #include "Fluorescence.h" 00014 #include "StructureObject.h" 00015 #include "ScatteringParameters.h" 00016 #include <string.h> 00017 #include <valarray> 00018 #include <vector> 00019 #include <complex> 00020 #include "HomogeneousScatteringMaterial.h" 00021 00022 00023 using namespace std; 00028 class HomogeneousLayer : public StructureObject 00029 { 00030 public: 00031 00032 00033 HomogeneousLayer(); 00034 ~HomogeneousLayer(); 00035 00047 HomogeneousLayer(ScatteringParameters* sp, float xmax, float ymax, StructureObject* prevStructureObject, std::vector<float> &rLambda, Fluorescence* fluor); 00048 00049 00059 HomogeneousLayer(StructureObject* prevStructureObject,float xmax, float ymax, complex_LC refrIndex, int nrLambda); 00060 00061 virtual int Process(WavePacket& wp,int up_down,int internal) const ; 00062 00063 complex_LC mGetRefrIndex(int nbr_lambda) const; 00064 00065 protected: 00069 HomogeneousScatteringMaterial* mHomogeneousScatteringMaterial; 00070 00071 }; 00072 00073 00079 class PerfectDiffuser : public StructureObject 00080 { 00081 public: 00082 PerfectDiffuser(); 00083 ~PerfectDiffuser(); 00084 00091 PerfectDiffuser(reflectanceParameters* rReflectance,StructureObject* prevStructureObject, std::vector<float> &rLambda); 00092 00102 virtual int Process(WavePacket& wp,int up_down,int internal) const ; 00103 00104 protected: 00105 reflectanceParameters* mReflectance; 00106 00107 00108 }; 00109 00110 00123 class TableLookUpLayer : public StructureObject 00124 { 00125 public: 00126 TableLookUpLayer(); 00127 ~TableLookUpLayer(); 00128 00137 TableLookUpLayer(Array2D<float>* transMat, StructureObject* prevStructureObject, std::vector<float> &rLambda); 00138 00148 virtual int Process(WavePacket& wp,int up_down,int internal) const ; 00149 00150 protected: 00151 00156 Array2D<float>* mTransMatrix; 00157 00162 double Interp(double X1, double X2, double Y1, double Y2, double X) const; 00163 }; 00164 00165 00171 class thinFilm : public StructureObject 00172 { 00173 public: 00174 thinFilm(); 00175 ~thinFilm(); 00176 00183 thinFilm(ScatteringParameters* sp,StructureObject* prevStructureObject, std::vector<float> &rLambda); 00184 00194 virtual int Process(WavePacket& wp,int up_down,int internal) const ; 00195 00196 protected: 00197 float mThickness; 00198 00199 00200 }; 00201 00202 #endif // !defined(AFX_HOMOGENEOUSLAYER_H__BBD9DA53_6E51_11D6_8061_00609705562A__INCLUDED_)