00001 #ifndef __CAMSmoothShockFlow__
00002 #define __CAMSmoothShockFlow__
00003
00032 #include <stdio.h>
00033 #include <math.h>
00034
00035 #include "CImage.hpp"
00036
00037 #include "AbsCImageFlow.hpp"
00038
00039 class CAMSmoothShockFlow : public AbsCImageFlow
00040 {
00041 protected:
00042
00043 double PIinverse;
00044 double a;
00045
00046 double theta;
00047 double thetaInv;
00048
00049 RComplex lambda;
00050 double lambdaT;
00051
00052 public:
00053
00054 CAMSmoothShockFlow(double atheta=0.001, double ax=2.0, double rlambda=1.0, double lambdaTg=1.0)
00055 {
00056 a= ax; PIinverse= 1.0/(4.0*atan(1.0));
00057 theta=atheta; thetaInv= 1.0/theta;
00058 lambda=RComplex(rlambda,theta,1);
00059 lambdaT= lambdaTg;
00060 }
00061 virtual ~CAMSmoothShockFlow(){}
00062
00063 virtual RComplex flow(CImage& image, int x, int y);
00064 virtual RComplex flow(CImage& image0, CImage& imSmooth, int x, int y);
00065
00066 virtual void report(FILE* file){}
00067 };
00068
00069
00070 #endif