VTK  9.2.6
vtkImplicitModeller.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImplicitModeller.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 =========================================================================*/
159 #ifndef vtkImplicitModeller_h
160 #define vtkImplicitModeller_h
161 
162 #include "vtkFiltersHybridModule.h" // For export macro
163 #include "vtkImageAlgorithm.h"
164 #include "vtkThreads.h" // for VTK_MAX_THREADS
165 
166 #define VTK_VOXEL_MODE 0
167 #define VTK_CELL_MODE 1
168 
169 class vtkDataArray;
170 class vtkExtractGeometry;
171 class vtkMultiThreader;
172 
173 class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
174 {
175 public:
177  void PrintSelf(ostream& os, vtkIndent indent) override;
178 
185 
190  double ComputeModelBounds(vtkDataSet* input = nullptr);
191 
193 
196  vtkGetVectorMacro(SampleDimensions, int, 3);
197  void SetSampleDimensions(int i, int j, int k);
198  void SetSampleDimensions(int dim[3]);
200 
202 
208  vtkSetClampMacro(MaximumDistance, double, 0.0, 1.0);
209  vtkGetMacro(MaximumDistance, double);
211 
213 
217  vtkSetVector6Macro(ModelBounds, double);
218  vtkGetVectorMacro(ModelBounds, double, 6);
220 
222 
228  vtkSetMacro(AdjustBounds, vtkTypeBool);
229  vtkGetMacro(AdjustBounds, vtkTypeBool);
230  vtkBooleanMacro(AdjustBounds, vtkTypeBool);
232 
234 
239  vtkSetClampMacro(AdjustDistance, double, -1.0, 1.0);
240  vtkGetMacro(AdjustDistance, double);
242 
244 
248  vtkSetMacro(Capping, vtkTypeBool);
249  vtkGetMacro(Capping, vtkTypeBool);
250  vtkBooleanMacro(Capping, vtkTypeBool);
252 
254 
258  void SetCapValue(double value);
259  vtkGetMacro(CapValue, double);
261 
263 
273  vtkSetMacro(ScaleToMaximumDistance, vtkTypeBool);
274  vtkGetMacro(ScaleToMaximumDistance, vtkTypeBool);
275  vtkBooleanMacro(ScaleToMaximumDistance, vtkTypeBool);
277 
279 
286  vtkSetClampMacro(ProcessMode, int, 0, 1);
287  vtkGetMacro(ProcessMode, int);
288  void SetProcessModeToPerVoxel() { this->SetProcessMode(VTK_VOXEL_MODE); }
289  void SetProcessModeToPerCell() { this->SetProcessMode(VTK_CELL_MODE); }
290  const char* GetProcessModeAsString(void);
292 
294 
298  vtkSetMacro(LocatorMaxLevel, int);
299  vtkGetMacro(LocatorMaxLevel, int);
301 
303 
306  vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS);
307  vtkGetMacro(NumberOfThreads, int);
309 
311 
315  vtkGetMacro(OutputScalarType, int);
316  void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
317  void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
318  void SetOutputScalarTypeToInt() { this->SetOutputScalarType(VTK_INT); }
319  void SetOutputScalarTypeToUnsignedInt() { this->SetOutputScalarType(VTK_UNSIGNED_INT); }
320  void SetOutputScalarTypeToLong() { this->SetOutputScalarType(VTK_LONG); }
321  void SetOutputScalarTypeToUnsignedLong() { this->SetOutputScalarType(VTK_UNSIGNED_LONG); }
322  void SetOutputScalarTypeToShort() { this->SetOutputScalarType(VTK_SHORT); }
323  void SetOutputScalarTypeToUnsignedShort() { this->SetOutputScalarType(VTK_UNSIGNED_SHORT); }
324  void SetOutputScalarTypeToUnsignedChar() { this->SetOutputScalarType(VTK_UNSIGNED_CHAR); }
325  void SetOutputScalarTypeToChar() { this->SetOutputScalarType(VTK_CHAR); }
327 
334  void StartAppend();
335 
343  void Append(vtkDataSet* input);
344 
348  void EndAppend();
349 
350  // See the vtkAlgorithm for a description of what these do
353 
354 protected:
357 
358  double GetScalarTypeMax(int type);
359 
362 
363  void StartAppend(int internal);
364  void Cap(vtkDataArray* s);
365 
368 
369  int SampleDimensions[3];
371  double ModelBounds[6];
373  double CapValue;
381 
382  // flag to limit to one ComputeModelBounds per StartAppend
384 
385  // the max distance computed during that one call
387 
389 
390 private:
391  vtkImplicitModeller(const vtkImplicitModeller&) = delete;
392  void operator=(const vtkImplicitModeller&) = delete;
393 };
394 
395 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:165
abstract class to specify dataset behavior
Definition: vtkDataSet.h:172
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.
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.
const char * GetProcessModeAsString(void)
Specify whether to visit each cell once per append or each voxel once per append.
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:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
A class for performing multithreaded execution.
@ value
Definition: vtkX3D.h:226
@ type
Definition: vtkX3D.h:522
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_VOXEL_MODE
#define VTK_CELL_MODE
#define VTK_SHORT
Definition: vtkType.h:48
#define VTK_UNSIGNED_INT
Definition: vtkType.h:51
#define VTK_DOUBLE
Definition: vtkType.h:55
#define VTK_UNSIGNED_CHAR
Definition: vtkType.h:47
#define VTK_UNSIGNED_SHORT
Definition: vtkType.h:49
#define VTK_INT
Definition: vtkType.h:50
#define VTK_FLOAT
Definition: vtkType.h:54
#define VTK_CHAR
Definition: vtkType.h:45
#define VTK_UNSIGNED_LONG
Definition: vtkType.h:53
#define VTK_LONG
Definition: vtkType.h:52