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
166class vtkDataArray;
168class vtkMultiThreader;
169
170class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
171{
172public:
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
332
340 void Append(vtkDataSet* input);
341
345 void EndAppend();
346
347 // See the vtkAlgorithm for a description of what these do
350
351protected:
354
356
359
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
387private:
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.
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.
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: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