00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef FILE_INITIALIZER_BASECLASS_HXX
00021
00022
00023 #include "../errors.cxx"
00024 #include <stdio.h>
00025
00026
00027 namespace Multivac
00028 {
00029
00030
00032
00034
00036
00041 template <class T>
00042 class CInitializer
00043 {
00044
00045
00046
00047
00048
00049
00050 protected:
00051
00053 Curve<T> Front;
00054
00057 int LastCurveUpdate;
00060 int LastCurveUpdateForDisplay;
00061
00062
00063
00064
00065
00066
00067 public:
00068
00069 CInitializer() throw();
00070
00071 virtual ~CInitializer() throw();
00072
00073
00074
00075
00076
00077
00078 public:
00079
00080 virtual bool IsNarrowBand() const = 0;
00081 virtual bool IsFastMarching() const = 0;
00082
00083 virtual void FirstInitMesh(CMesh<T>& Mesh) const = 0;
00084 virtual void FirstInitInitialCurve(CMesh<T>& Mesh, CInitialCurve<T>& InitialCurve) const = 0;
00085 virtual void FirstInitPhiAndF(CMesh<T>& Mesh, CInitialCurve<T>& InitialCurve, CLevelSet<T>& Phi, CSpeedFunction<T>& F, CUpdater<T>& Updater) = 0;
00086
00087 virtual void InitMesh(int iter, CMesh<T>& Mesh, CLevelSet<T>& Phi, CSpeedFunction<T>& F, CUpdater<T>& Updater, T CurrentTime) const = 0;
00088 virtual void InitPhiAndF(int iter, CMesh<T>& Mesh, CLevelSet<T>& Phi, CSpeedFunction<T>& F, CUpdater<T>& Updater, T CurrentTime) = 0;
00089
00090 virtual void BuildCurveForDisplay(int iter, CMesh<T>& Mesh, CLevelSet<T>& Phi) = 0;
00091
00092 Curve<T>& GetFront();
00093
00094 virtual void Save(string CurvesFile, string CurveLengthsFile);
00095
00096 };
00097
00098
00099 }
00100
00101
00102 #define FILE_INITIALIZER_BASECLASS_HXX
00103 #endif