Open PaperOpt
OpenPaperOpt/Surface.h
Go to the documentation of this file.
00001 // Surface.h: interface for the Surface class.
00002 //
00004 
00005 #if !defined(AFX_SURFACE_H__FD6A9522_062B_11D7_B637_00500429BABE__INCLUDED_)
00006 #define AFX_SURFACE_H__FD6A9522_062B_11D7_B637_00500429BABE__INCLUDED_
00007 
00008 #if _MSC_VER >= 1000
00009 #pragma once
00010 #endif // _MC_VER >= 1000
00011 
00012 #include "WavePacket.h"
00013 #include "StructureObject.h"
00014 #include "Array2D.h"
00015 
00016 
00017 
00018 #define FLAT 0
00019 #define TOPO 1
00020 #define TOPO_TRI 2
00021 #define TN 3
00022 #define TN_SUBFLAT 4
00023 #define TN_INK 5
00024 
00025 
00026 class Surface : public StructureObject 
00027 {
00028 
00029         friend class SimVolume;
00030         friend class SurfaceTopo;
00031         friend class SurfaceTopography;
00032         friend class SurfaceTN;
00033         friend class SurfaceTNSubflat;
00034         friend class SurfaceTNInk;
00035 
00036 public:
00037         Surface();
00038         virtual ~Surface();
00039          
00053         Surface(float z,float  rms_lo, float rms_hi,float xmin,
00054                 float xmax,float ymin,float ymax,StructureObject * el);
00055 
00060         virtual double mZposition(WavePacket &wp) const {return mZoffset;};
00061         
00068         virtual int Process(WavePacket& wp, int up_down, int internal) const ;
00069 
00078         virtual int mIntercept(WavePacket& wp,double t1in,double t2in,int ud,double& t) const;
00079 
00080         virtual int mGetTypeSurface() const {return mTypeSurface ;} ; //const ;
00081         
00082         virtual double mGetSurfPosition() const {return(mZoffset);}
00083 
00084         virtual double mGetZmin() const { return mZmin; }
00085         virtual double mGetZmax() const { return mZmax; }
00086         virtual double mGetXmin() const { return mXMin; }
00087         virtual double mGetXmax() const { return mXMax; }
00088         virtual double mGetYmin() const { return mYMin; }
00089         virtual double mGetYmax() const { return mYMax; }
00090 
00091         virtual double mGetZoffset() const { return mZoffset; }
00092 
00104 protected:
00105  
00106         float mZoffset;
00107   float mZmin;
00108         float mZmax;
00109  
00110         
00111         //V3 mSnormal;
00112   V2 <float> rms;
00113   
00114 
00115         int mTypeSurface; 
00116 };
00117 
00118 #endif // !defined(AFX_SURFACE_H__FD6A9522_062B_11D7_B637_00500429BABE__INCLUDED_)