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) override;
48 
50 
54  double EvaluateFunction(double x[3]) override;
56 
61  void EvaluateGradient(double x[3], double g[3]) override;
62 
66  vtkMTimeType GetMTime() override;
67 
72  void AddFunction(vtkImplicitFunction *in, double weight);
73 
78  void AddFunction(vtkImplicitFunction *in) { this->AddFunction(in, 1.0); }
79 
83  void RemoveAllFunctions();
84 
88  void SetFunctionWeight(vtkImplicitFunction *f, double weight);
89 
91 
98  vtkSetMacro(NormalizeByWeight, int);
99  vtkGetMacro(NormalizeByWeight, int);
100  vtkBooleanMacro(NormalizeByWeight, int);
102 
103 protected:
104  vtkImplicitSum();
105  ~vtkImplicitSum() override;
106 
109  double TotalWeight;
110 
111  void CalculateTotalWeight(void);
113 
114 private:
115  vtkImplicitSum(const vtkImplicitSum&) = delete;
116  void operator=(const vtkImplicitSum&) = delete;
117 };
118 
119 #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.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:300
vtkImplicitFunctionCollection * FunctionList
maintain a list of implicit functions
vtkDoubleArray * Weights
virtual void EvaluateGradient(double x[3], double g[3])=0
Evaluate function gradient at position x-y-z and pass back vector.
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.
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.