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
97VTK_ABI_NAMESPACE_BEGIN
98class vtkDataArray;
100class vtkMultiThreader;
101
102class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
103{
104public:
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); }
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
243 void SetOutputScalarType(int type);
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
264
272 void Append(vtkDataSet* input);
273
277 void EndAppend();
278
279 // See the vtkAlgorithm for a description of what these do
282
283protected:
286
287 double GetScalarTypeMax(int type);
288
291
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
319private:
321 void operator=(const vtkImplicitModeller&) = delete;
322};
323
324VTK_ABI_NAMESPACE_END
325#endif
abstract superclass for arrays of numeric data
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.
void StartAppend()
Initialize the filter for appending data.
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...
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.
const char * GetProcessModeAsString()
Specify whether to visit each cell once per append or each voxel once per append.
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.
static vtkImplicitModeller * New()
Construct with sample dimensions=(50,50,50), and so that model bounds are automatically computed from...
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.
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