VTK  9.3.20240424
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
147#ifndef vtkImplicitModeller_h
148#define vtkImplicitModeller_h
149
150#include "vtkFiltersHybridModule.h" // For export macro
151#include "vtkImageAlgorithm.h"
152#include "vtkThreads.h" // for VTK_MAX_THREADS
153
154#define VTK_VOXEL_MODE 0
155#define VTK_CELL_MODE 1
156
157VTK_ABI_NAMESPACE_BEGIN
158class vtkDataArray;
160class vtkMultiThreader;
161
162class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
163{
164public:
166 void PrintSelf(ostream& os, vtkIndent indent) override;
167
174
179 double ComputeModelBounds(vtkDataSet* input = nullptr);
180
182
185 vtkGetVectorMacro(SampleDimensions, int, 3);
186 void SetSampleDimensions(int i, int j, int k);
187 void SetSampleDimensions(int dim[3]);
189
191
197 vtkSetClampMacro(MaximumDistance, double, 0.0, 1.0);
198 vtkGetMacro(MaximumDistance, double);
200
202
206 vtkSetVector6Macro(ModelBounds, double);
207 vtkGetVectorMacro(ModelBounds, double, 6);
209
211
217 vtkSetMacro(AdjustBounds, vtkTypeBool);
218 vtkGetMacro(AdjustBounds, vtkTypeBool);
219 vtkBooleanMacro(AdjustBounds, vtkTypeBool);
221
223
228 vtkSetClampMacro(AdjustDistance, double, -1.0, 1.0);
229 vtkGetMacro(AdjustDistance, double);
231
233
237 vtkSetMacro(Capping, vtkTypeBool);
238 vtkGetMacro(Capping, vtkTypeBool);
239 vtkBooleanMacro(Capping, vtkTypeBool);
241
243
247 void SetCapValue(double value);
248 vtkGetMacro(CapValue, double);
250
252
262 vtkSetMacro(ScaleToMaximumDistance, vtkTypeBool);
263 vtkGetMacro(ScaleToMaximumDistance, vtkTypeBool);
264 vtkBooleanMacro(ScaleToMaximumDistance, vtkTypeBool);
266
268
275 vtkSetClampMacro(ProcessMode, int, 0, 1);
276 vtkGetMacro(ProcessMode, int);
277 void SetProcessModeToPerVoxel() { this->SetProcessMode(VTK_VOXEL_MODE); }
278 void SetProcessModeToPerCell() { this->SetProcessMode(VTK_CELL_MODE); }
281
283
287 vtkSetMacro(LocatorMaxLevel, int);
288 vtkGetMacro(LocatorMaxLevel, int);
290
292
295 vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS);
296 vtkGetMacro(NumberOfThreads, int);
298
300
303 void SetOutputScalarType(int type);
304 vtkGetMacro(OutputScalarType, int);
305 void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
306 void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
307 void SetOutputScalarTypeToInt() { this->SetOutputScalarType(VTK_INT); }
308 void SetOutputScalarTypeToUnsignedInt() { this->SetOutputScalarType(VTK_UNSIGNED_INT); }
309 void SetOutputScalarTypeToLong() { this->SetOutputScalarType(VTK_LONG); }
310 void SetOutputScalarTypeToUnsignedLong() { this->SetOutputScalarType(VTK_UNSIGNED_LONG); }
311 void SetOutputScalarTypeToShort() { this->SetOutputScalarType(VTK_SHORT); }
312 void SetOutputScalarTypeToUnsignedShort() { this->SetOutputScalarType(VTK_UNSIGNED_SHORT); }
313 void SetOutputScalarTypeToUnsignedChar() { this->SetOutputScalarType(VTK_UNSIGNED_CHAR); }
314 void SetOutputScalarTypeToChar() { this->SetOutputScalarType(VTK_CHAR); }
316
324
332 void Append(vtkDataSet* input);
333
337 void EndAppend();
338
339 // See the vtkAlgorithm for a description of what these do
342
343protected:
346
347 double GetScalarTypeMax(int type);
348
351
354
357
358 int SampleDimensions[3];
360 double ModelBounds[6];
362 double CapValue;
370
371 // flag to limit to one ComputeModelBounds per StartAppend
373
374 // the max distance computed during that one call
376
378
379private:
381 void operator=(const vtkImplicitModeller&) = delete;
382};
383
384VTK_ABI_NAMESPACE_END
385#endif
abstract superclass for arrays of numeric data
abstract class to specify dataset behavior
Definition vtkDataSet.h:166
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:108
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