VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkImplicitSum.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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&); // Not implemented. 00096 void operator=(const vtkImplicitSum&); // Not implemented. 00097 }; 00098 00099 #endif