//****************************************************************************** //** SCATMECH: Polarized Light Scattering C++ Class Library //** //** File: focussedbeam.h //** //** Thomas A. Germer //** Optical Technology Division, National Institute of Standards and Technology //** 100 Bureau Dr. Stop 8443; Gaithersburg, MD 20899-8443 //** Phone: (301) 975-2876; FAX: (301) 975-6991 //** Email: thomas.germer@nist.gov //** //** Version: 6.00 (February 2008) //** //****************************************************************************** #ifndef SCATMECH_FOCUSSEDBEAM_H #define SCATMECH_FOCUSSEDBEAM_H #include "scatmech.h" #include "instrument.h" #include "inherit.h" #include "vector3d.h" namespace SCATMECH { class Focussed_Beam_Instrument_BRDF_Model : public Instrument_BRDF_Model { public: DECLARE_MODEL(); DECLARE_PARAMETER(double,alpha); DECLARE_PARAMETER(double,focal_point); DECLARE_PARAMETER(BRDF_Model_Ptr,model); public: Focussed_Beam_Instrument_BRDF_Model(); protected: virtual MuellerMatrix mueller(); static Vector four_angles(double theta,double phi,double alpha,double beta); }; class Circle_Integral { public: static double x(int i) {if (i<0||i>=21) return 0.; else return xx[i];} static double y(int i) {if (i<0||i>=21) return 0.; else return yy[i];} static double w(int i) {if (i<0||i>=21) return 0.; else return ww[i];} static int n() {return 21;} static double r(int i) {if (i<0||i>=21) return 0.; else return sqrt(sqr(xx[i])+sqr(yy[i]));} static double theta(int i) {if (i<0||i>=21) return 0.; else return atan2(yy[i],xx[i]);} private: static double xx[]; static double yy[]; static double ww[]; }; } // namespace SCATMECH { #endif