VTK  9.1.0
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 =========================================================================*/
156 #ifndef vtkImplicitModeller_h
157 #define vtkImplicitModeller_h
158 
159 #include "vtkFiltersHybridModule.h" // For export macro
160 #include "vtkImageAlgorithm.h"
161 #include "vtkThreads.h" // for VTK_MAX_THREADS
162 
163 #define VTK_VOXEL_MODE 0
164 #define VTK_CELL_MODE 1
165 
166 class vtkDataArray;
167 class vtkExtractGeometry;
168 class vtkMultiThreader;
169 
170 class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
171 {
172 public:
174  void PrintSelf(ostream& os, vtkIndent indent) override;
175 
182 
187  double ComputeModelBounds(vtkDataSet* input = nullptr);
188 
190 
193  vtkGetVectorMacro(SampleDimensions, int, 3);
194  void SetSampleDimensions(int i, int j, int k);
195  void SetSampleDimensions(int dim[3]);
197 
199 
205  vtkSetClampMacro(MaximumDistance, double, 0.0, 1.0);
206  vtkGetMacro(MaximumDistance, double);
208 
210 
214  vtkSetVector6Macro(ModelBounds, double);
215  vtkGetVectorMacro(ModelBounds, double, 6);
217 
219 
225  vtkSetMacro(AdjustBounds, vtkTypeBool);
226  vtkGetMacro(AdjustBounds, vtkTypeBool);
227  vtkBooleanMacro(AdjustBounds, vtkTypeBool);
229 
231 
236  vtkSetClampMacro(AdjustDistance, double, -1.0, 1.0);
237  vtkGetMacro(AdjustDistance, double);
239 
241 
245  vtkSetMacro(Capping, vtkTypeBool);
246  vtkGetMacro(Capping, vtkTypeBool);
247  vtkBooleanMacro(Capping, vtkTypeBool);
249 
251 
255  void SetCapValue(double value);
256  vtkGetMacro(CapValue, double);
258 
260 
270  vtkSetMacro(ScaleToMaximumDistance, vtkTypeBool);
271  vtkGetMacro(ScaleToMaximumDistance, vtkTypeBool);
272  vtkBooleanMacro(ScaleToMaximumDistance, vtkTypeBool);
274 
276 
283  vtkSetClampMacro(ProcessMode, int, 0, 1);
284  vtkGetMacro(ProcessMode, int);
285  void SetProcessModeToPerVoxel() { this->SetProcessMode(VTK_VOXEL_MODE); }
286  void SetProcessModeToPerCell() { this->SetProcessMode(VTK_CELL_MODE); }
287  const char* GetProcessModeAsString(void);
289 
291 
295  vtkSetMacro(LocatorMaxLevel, int);
296  vtkGetMacro(LocatorMaxLevel, int);
298 
300 
303  vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS);
304  vtkGetMacro(NumberOfThreads, int);
306 
308 
312  vtkGetMacro(OutputScalarType, int);
313  void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
314  void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
315  void SetOutputScalarTypeToInt() { this->SetOutputScalarType(VTK_INT); }
316  void SetOutputScalarTypeToUnsignedInt() { this->SetOutputScalarType(VTK_UNSIGNED_INT); }
317  void SetOutputScalarTypeToLong() { this->SetOutputScalarType(VTK_LONG); }
318  void SetOutputScalarTypeToUnsignedLong() { this->SetOutputScalarType(VTK_UNSIGNED_LONG); }
319  void SetOutputScalarTypeToShort() { this->SetOutputScalarType(VTK_SHORT); }
320  void SetOutputScalarTypeToUnsignedShort() { this->SetOutputScalarType(VTK_UNSIGNED_SHORT); }
321  void SetOutputScalarTypeToUnsignedChar() { this->SetOutputScalarType(VTK_UNSIGNED_CHAR); }
322  void SetOutputScalarTypeToChar() { this->SetOutputScalarType(VTK_CHAR); }
324 
331  void StartAppend();
332 
340  void Append(vtkDataSet* input);
341 
345  void EndAppend();
346 
347  // See the vtkAlgorithm for a description of what these do
350 
351 protected:
354 
355  double GetScalarTypeMax(int type);
356 
359 
360  void StartAppend(int internal);
361  void Cap(vtkDataArray* s);
362 
365 
366  int SampleDimensions[3];
368  double ModelBounds[6];
370  double CapValue;
378 
379  // flag to limit to one ComputeModelBounds per StartAppend
381 
382  // the max distance computed during that one call
384 
386 
387 private:
388  vtkImplicitModeller(const vtkImplicitModeller&) = delete;
389  void operator=(const vtkImplicitModeller&) = delete;
390 };
391 
392 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
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.
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:113
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