00001 #ifndef __AMSmoothShockFlow__ 00002 #define __AMSmoothShockFlow__ 00003 00035 #include <stdio.h> 00036 #include <math.h> 00037 00038 #include "RImage.hpp" 00039 00040 #include "AbsRImageFlow.hpp" 00041 00042 class AMSmoothShockFlow : public AbsRImageFlow 00043 { 00044 protected: 00045 00046 double lambda; 00047 00048 double PIinverse; 00049 double a; // allows smooth shocks with a>1.0 00050 00051 double t; 00052 00053 public: 00054 00055 AMSmoothShockFlow(double ax=2.0, double alambda=1.0) 00056 {a= ax; PIinverse= 1.0/(4.0*atan(1.0)); lambda=alambda; } 00057 virtual ~AMSmoothShockFlow(){} 00058 00059 virtual void setTime(int atime){t= atime;} 00060 virtual double getTime(){return t;} 00061 00062 virtual double flow(RImage& image, int x, int y); 00063 virtual double flow(RImage& image0, RImage& imSmooth, int x, int y); 00064 00065 virtual void report(FILE* file){} 00066 }; 00067 00068 00069 #endif