00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00028 #ifndef __vtkImplicitSum_h
00029 #define __vtkImplicitSum_h
00030
00031 #include "vtkImplicitFunction.h"
00032
00033 class vtkDoubleArray;
00034 class vtkImplicitFunctionCollection;
00035
00036 class VTK_FILTERING_EXPORT vtkImplicitSum : public vtkImplicitFunction
00037 {
00038 public:
00039 static vtkImplicitSum *New();
00040
00041 vtkTypeRevisionMacro(vtkImplicitSum,vtkImplicitFunction);
00042 void PrintSelf(ostream& os, vtkIndent indent);
00043
00045
00046 double EvaluateFunction(double x[3]);
00047 double EvaluateFunction(double x, double y, double z)
00048 {return this->vtkImplicitFunction::EvaluateFunction(x, y, z); } ;
00050
00053 void EvaluateGradient(double x[3], double g[3]);
00054
00056 unsigned long GetMTime();
00057
00060 void AddFunction(vtkImplicitFunction *in, double weight);
00061
00064 void AddFunction(vtkImplicitFunction *in) { this->AddFunction(in, 1.0); }
00065
00067 void RemoveAllFunctions();
00068
00070 void SetFunctionWeight(vtkImplicitFunction *f, double weight);
00071
00073
00078 vtkSetMacro(NormalizeByWeight, int);
00079 vtkGetMacro(NormalizeByWeight, int);
00080 vtkBooleanMacro(NormalizeByWeight, int);
00082
00083 protected:
00084 vtkImplicitSum();
00085 ~vtkImplicitSum();
00086
00087 vtkImplicitFunctionCollection *FunctionList;
00088 vtkDoubleArray *Weights;
00089 double TotalWeight;
00090
00091 void CalculateTotalWeight(void);
00092 int NormalizeByWeight;
00093
00094 private:
00095 vtkImplicitSum(const vtkImplicitSum&);
00096 void operator=(const vtkImplicitSum&);
00097 };
00098
00099 #endif