Open PaperOpt
OpenPaperOpt/LightSource.h
Go to the documentation of this file.
00001 // LightSource.h: interface for the LightSource class.
00002 //
00004 
00005 #if !defined(AFX_LightSource_H__4664300F_2477_11D6_804A_00609705562A__INCLUDED_)
00006 #define AFX_LightSource_H__4664300F_2477_11D6_804A_00609705562A__INCLUDED_
00007 
00008 #if _MSC_VER >= 1000
00009 #pragma once
00010 #endif // _MSC_VER >= 1000
00011 
00012 
00013 #include "WavePacket.h"
00014 #include <string>
00015 #include <vector>
00016 #include "utilities.h"
00017 #include "Distribution.h"
00018 
00019 
00020 
00021 class LightSource  
00022 {
00023 public:
00024 
00039   LightSource(Distributions::Distribution* pDistTarget, Distributions::Distribution* pDistDirection, V3<float> origin, 
00040                 int polVal, float polarizationValue, int noOfWp, vector<float>& rLambdas, vector<float>& rLambdaWeights);
00041         virtual ~LightSource();
00042         LightSource();
00043 
00050   virtual int Process(WavePacket &wp, float lam);
00051 
00052   // Setting functions
00053  /* void m_set_lightsource(char type[20],char distribution[20], int number,
00054     float polarisation,int pol_val, V3 <double> origin, V3 <double> center, float x_min, float x_max, float y_min, float y_max);
00055   */
00056 
00057   // Get functions
00058   int GetNumber(){return(mNumber);};
00059          
00060   //Public variables added by ML TEMP FIX.
00061   vector<float> mLambda;
00062   vector<float> mLambdaWeights;
00063   int nrWavePackets;
00064 
00065 private:
00066         
00067 
00068 
00069   int mPolVal; //polarised (1) or not (0)
00070   char mType[20];   // beam elrepho lambert
00071   char mDistribution[20];  //uniform, gaussian pencil
00072   //float mlambda;
00073   float mDiameter;
00074   int mNumber;
00075   float mPolarisation;
00076   float mOrigin[3];
00077   float mCenter[3];
00078   float mXMin,mYMin,mXMax,mYMax;  // must be defined by the surface profile 
00079                                       // for uniform distribution
00080   
00081   // used for equallyn spaced imllumination points:
00082   int mNbrx,mNbry;
00083   double mDiffx,mDiffy;
00084 
00085   //Distributions for target (illuminated spot) and direction (LC)
00086   Distributions::Distribution* mpDistTarget;
00087   Distributions::Distribution* mpDistDirection;
00088 
00089 };
00090 
00091 #endif // !defined(AFX_LightSource_H__4664300F_2477_11D6_804A_00609705562A__INCLUDED_)
00092