VTK  9.3.0
vtkImplicitModeller.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
87 #ifndef vtkImplicitModeller_h
88 #define vtkImplicitModeller_h
89 
90 #include "vtkFiltersHybridModule.h" // For export macro
91 #include "vtkImageAlgorithm.h"
92 #include "vtkThreads.h" // for VTK_MAX_THREADS
93 
94 #define VTK_VOXEL_MODE 0
95 #define VTK_CELL_MODE 1
96 
97 VTK_ABI_NAMESPACE_BEGIN
98 class vtkDataArray;
99 class vtkExtractGeometry;
100 class vtkMultiThreader;
101 
102 class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
103 {
104 public:
106  void PrintSelf(ostream& os, vtkIndent indent) override;
107 
114 
119  double ComputeModelBounds(vtkDataSet* input = nullptr);
120 
122 
125  vtkGetVectorMacro(SampleDimensions, int, 3);
126  void SetSampleDimensions(int i, int j, int k);
127  void SetSampleDimensions(int dim[3]);
129 
131 
137  vtkSetClampMacro(MaximumDistance, double, 0.0, 1.0);
138  vtkGetMacro(MaximumDistance, double);
140 
142 
146  vtkSetVector6Macro(ModelBounds, double);
147  vtkGetVectorMacro(ModelBounds, double, 6);
149 
151 
157  vtkSetMacro(AdjustBounds, vtkTypeBool);
158  vtkGetMacro(AdjustBounds, vtkTypeBool);
159  vtkBooleanMacro(AdjustBounds, vtkTypeBool);
161 
163 
168  vtkSetClampMacro(AdjustDistance, double, -1.0, 1.0);
169  vtkGetMacro(AdjustDistance, double);
171 
173 
177  vtkSetMacro(Capping, vtkTypeBool);
178  vtkGetMacro(Capping, vtkTypeBool);
179  vtkBooleanMacro(Capping, vtkTypeBool);
181 
183 
187  void SetCapValue(double value);
188  vtkGetMacro(CapValue, double);
190 
192 
202  vtkSetMacro(ScaleToMaximumDistance, vtkTypeBool);
203  vtkGetMacro(ScaleToMaximumDistance, vtkTypeBool);
204  vtkBooleanMacro(ScaleToMaximumDistance, vtkTypeBool);
206 
208 
215  vtkSetClampMacro(ProcessMode, int, 0, 1);
216  vtkGetMacro(ProcessMode, int);
217  void SetProcessModeToPerVoxel() { this->SetProcessMode(VTK_VOXEL_MODE); }
218  void SetProcessModeToPerCell() { this->SetProcessMode(VTK_CELL_MODE); }
219  const char* GetProcessModeAsString();
221 
223 
227  vtkSetMacro(LocatorMaxLevel, int);
228  vtkGetMacro(LocatorMaxLevel, int);
230 
232 
235  vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS);
236  vtkGetMacro(NumberOfThreads, int);
238 
240 
244  vtkGetMacro(OutputScalarType, int);
245  void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
246  void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
247  void SetOutputScalarTypeToInt() { this->SetOutputScalarType(VTK_INT); }
248  void SetOutputScalarTypeToUnsignedInt() { this->SetOutputScalarType(VTK_UNSIGNED_INT); }
249  void SetOutputScalarTypeToLong() { this->SetOutputScalarType(VTK_LONG); }
250  void SetOutputScalarTypeToUnsignedLong() { this->SetOutputScalarType(VTK_UNSIGNED_LONG); }
251  void SetOutputScalarTypeToShort() { this->SetOutputScalarType(VTK_SHORT); }
252  void SetOutputScalarTypeToUnsignedShort() { this->SetOutputScalarType(VTK_UNSIGNED_SHORT); }
253  void SetOutputScalarTypeToUnsignedChar() { this->SetOutputScalarType(VTK_UNSIGNED_CHAR); }
254  void SetOutputScalarTypeToChar() { this->SetOutputScalarType(VTK_CHAR); }
256 
263  void StartAppend();
264 
272  void Append(vtkDataSet* input);
273 
277  void EndAppend();
278 
279  // See the vtkAlgorithm for a description of what these do
282 
283 protected:
286 
287  double GetScalarTypeMax(int type);
288 
291 
292  void StartAppend(int internal);
293  void Cap(vtkDataArray* s);
294 
297 
298  int SampleDimensions[3];
300  double ModelBounds[6];
302  double CapValue;
310 
311  // flag to limit to one ComputeModelBounds per StartAppend
313 
314  // the max distance computed during that one call
316 
318 
319 private:
320  vtkImplicitModeller(const vtkImplicitModeller&) = delete;
321  void operator=(const vtkImplicitModeller&) = delete;
322 };
323 
324 VTK_ABI_NAMESPACE_END
325 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
extract cells that lie either entirely inside or outside of a specified implicit function
Generic algorithm superclass for image algs.
compute distance from input geometry on structured point dataset
void SetOutputScalarTypeToDouble()
Set the desired output scalar type.
const char * GetProcessModeAsString()
Specify whether to visit each cell once per append or each voxel once per append.
void StartAppend()
Initialize the filter for appending data.
static vtkImplicitModeller * New()
Construct with sample dimensions=(50,50,50), and so that model bounds are automatically computed from...
double GetScalarTypeMax(int type)
void SetOutputScalarTypeToChar()
Set the desired output scalar type.
double ComputeModelBounds(vtkDataSet *input=nullptr)
Compute ModelBounds from input geometry.
vtkMultiThreader * Threader
void Cap(vtkDataArray *s)
int FillInputPortInformation(int, vtkInformation *) override
These method should be reimplemented by subclasses that have more than a single input or single outpu...
void StartAppend(int internal)
void SetOutputScalarTypeToUnsignedShort()
Set the desired output scalar type.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
vtkTypeBool ScaleToMaximumDistance
void SetOutputScalarTypeToUnsignedInt()
Set the desired output scalar type.
vtkTypeBool ProcessRequest(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Process a request from the executive.
void EndAppend()
Method completes the append process.
void SetSampleDimensions(int i, int j, int k)
Set/Get the i-j-k dimensions on which to sample distance function.
void SetSampleDimensions(int dim[3])
Set/Get the i-j-k dimensions on which to sample distance function.
~vtkImplicitModeller() override
void SetOutputScalarTypeToUnsignedChar()
Set the desired output scalar type.
void SetOutputScalarTypeToUnsignedLong()
Set the desired output scalar type.
void SetOutputScalarTypeToLong()
Set the desired output scalar type.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called in response to a REQUEST_DATA request from the executive.
void SetOutputScalarTypeToInt()
Set the desired output scalar type.
void SetCapValue(double value)
Specify the capping value to use.
void SetOutputScalarTypeToShort()
Set the desired output scalar type.
void SetOutputScalarTypeToFloat()
Set the desired output scalar type.
void Append(vtkDataSet *input)
Append a data set to the existing output.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetProcessModeToPerCell()
Specify whether to visit each cell once per append or each voxel once per append.
void SetOutputScalarType(int type)
Set the desired output scalar type.
void SetProcessModeToPerVoxel()
Specify whether to visit each cell once per append or each voxel once per append.
a simple class to control print indentation
Definition: vtkIndent.h:38
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
A class for performing multithreaded execution.
@ value
Definition: vtkX3D.h:220
@ type
Definition: vtkX3D.h:516
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_VOXEL_MODE
#define VTK_CELL_MODE
#define VTK_SHORT
Definition: vtkType.h:36
#define VTK_UNSIGNED_INT
Definition: vtkType.h:39
#define VTK_DOUBLE
Definition: vtkType.h:43
#define VTK_UNSIGNED_CHAR
Definition: vtkType.h:35
#define VTK_UNSIGNED_SHORT
Definition: vtkType.h:37
#define VTK_INT
Definition: vtkType.h:38
#define VTK_FLOAT
Definition: vtkType.h:42
#define VTK_CHAR
Definition: vtkType.h:33
#define VTK_UNSIGNED_LONG
Definition: vtkType.h:41
#define VTK_LONG
Definition: vtkType.h:40