Open PaperOpt
OpenPaperOpt/HomogeneousLayer.h
Go to the documentation of this file.
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_)