VTK
vtkImplicitSum.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImplicitSum.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
32 #ifndef vtkImplicitSum_h
33 #define vtkImplicitSum_h
34 
35 #include "vtkCommonDataModelModule.h" // For export macro
36 #include "vtkImplicitFunction.h"
37 
38 class vtkDoubleArray;
40 
41 class VTKCOMMONDATAMODEL_EXPORT vtkImplicitSum : public vtkImplicitFunction
42 {
43 public:
44  static vtkImplicitSum *New();
45 
47  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
48 
50 
53  double EvaluateFunction(double x[3]) VTK_OVERRIDE;
54  double EvaluateFunction(double x, double y, double z)
55  {return this->vtkImplicitFunction::EvaluateFunction(x, y, z); } ;
57 
62  void EvaluateGradient(double x[3], double g[3]) VTK_OVERRIDE;
63 
67  vtkMTimeType GetMTime() VTK_OVERRIDE;
68 
73  void AddFunction(vtkImplicitFunction *in, double weight);
74 
79  void AddFunction(vtkImplicitFunction *in) { this->AddFunction(in, 1.0); }
80 
84  void RemoveAllFunctions();
85 
89  void SetFunctionWeight(vtkImplicitFunction *f, double weight);
90 
92 
99  vtkSetMacro(NormalizeByWeight, int);
100  vtkGetMacro(NormalizeByWeight, int);
101  vtkBooleanMacro(NormalizeByWeight, int);
103 
104 protected:
105  vtkImplicitSum();
106  ~vtkImplicitSum() VTK_OVERRIDE;
107 
109  vtkDoubleArray *Weights;
110  double TotalWeight;
111 
112  void CalculateTotalWeight(void);
113  int NormalizeByWeight;
114 
115 private:
116  vtkImplicitSum(const vtkImplicitSum&) VTK_DELETE_FUNCTION;
117  void operator=(const vtkImplicitSum&) VTK_DELETE_FUNCTION;
118 };
119 
120 #endif
abstract interface for implicit functions
void AddFunction(vtkImplicitFunction *in)
Add another implicit function to the list of functions, weighting it by a factor of 1...
virtual double EvaluateFunction(double x[3])=0
Evaluate function at position x-y-z and return value.
maintain a list of implicit functions
virtual void EvaluateGradient(double x[3], double g[3])=0
Evaluate function gradient at position x-y-z and pass back vector.
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMTimeType GetMTime() override
Overload standard modified time function.
double EvaluateFunction(double x, double y, double z)
Evaluate implicit function using current functions and weights.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
implicit sum of other implicit functions
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.