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=========================================================================*/
96#ifndef vtkImplicitModeller_h
97#define vtkImplicitModeller_h
98
99#include "vtkFiltersHybridModule.h" // For export macro
100#include "vtkImageAlgorithm.h"
101#include "vtkThreads.h" // for VTK_MAX_THREADS
102
103#define VTK_VOXEL_MODE 0
104#define VTK_CELL_MODE 1
105
106class vtkDataArray;
108class vtkMultiThreader;
109
110class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
111{
112public:
114 void PrintSelf(ostream& os, vtkIndent indent) override;
115
122
127 double ComputeModelBounds(vtkDataSet* input = nullptr);
128
130
133 vtkGetVectorMacro(SampleDimensions, int, 3);
134 void SetSampleDimensions(int i, int j, int k);
135 void SetSampleDimensions(int dim[3]);
137
139
145 vtkSetClampMacro(MaximumDistance, double, 0.0, 1.0);
146 vtkGetMacro(MaximumDistance, double);
148
150
154 vtkSetVector6Macro(ModelBounds, double);
155 vtkGetVectorMacro(ModelBounds, double, 6);
157
159
165 vtkSetMacro(AdjustBounds, vtkTypeBool);
166 vtkGetMacro(AdjustBounds, vtkTypeBool);
167 vtkBooleanMacro(AdjustBounds, vtkTypeBool);
169
171
176 vtkSetClampMacro(AdjustDistance, double, -1.0, 1.0);
177 vtkGetMacro(AdjustDistance, double);
179
181
185 vtkSetMacro(Capping, vtkTypeBool);
186 vtkGetMacro(Capping, vtkTypeBool);
187 vtkBooleanMacro(Capping, vtkTypeBool);
189
191
195 void SetCapValue(double value);
196 vtkGetMacro(CapValue, double);
198
200
210 vtkSetMacro(ScaleToMaximumDistance, vtkTypeBool);
211 vtkGetMacro(ScaleToMaximumDistance, vtkTypeBool);
212 vtkBooleanMacro(ScaleToMaximumDistance, vtkTypeBool);
214
216
223 vtkSetClampMacro(ProcessMode, int, 0, 1);
224 vtkGetMacro(ProcessMode, int);
225 void SetProcessModeToPerVoxel() { this->SetProcessMode(VTK_VOXEL_MODE); }
226 void SetProcessModeToPerCell() { this->SetProcessMode(VTK_CELL_MODE); }
227 const char* GetProcessModeAsString(void);
229
231
235 vtkSetMacro(LocatorMaxLevel, int);
236 vtkGetMacro(LocatorMaxLevel, int);
238
240
243 vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS);
244 vtkGetMacro(NumberOfThreads, int);
246
248
252 vtkGetMacro(OutputScalarType, int);
253 void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
254 void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
255 void SetOutputScalarTypeToInt() { this->SetOutputScalarType(VTK_INT); }
256 void SetOutputScalarTypeToUnsignedInt() { this->SetOutputScalarType(VTK_UNSIGNED_INT); }
257 void SetOutputScalarTypeToLong() { this->SetOutputScalarType(VTK_LONG); }
258 void SetOutputScalarTypeToUnsignedLong() { this->SetOutputScalarType(VTK_UNSIGNED_LONG); }
259 void SetOutputScalarTypeToShort() { this->SetOutputScalarType(VTK_SHORT); }
260 void SetOutputScalarTypeToUnsignedShort() { this->SetOutputScalarType(VTK_UNSIGNED_SHORT); }
261 void SetOutputScalarTypeToUnsignedChar() { this->SetOutputScalarType(VTK_UNSIGNED_CHAR); }
262 void SetOutputScalarTypeToChar() { this->SetOutputScalarType(VTK_CHAR); }
264
272
280 void Append(vtkDataSet* input);
281
285 void EndAppend();
286
287 // See the vtkAlgorithm for a description of what these do
290
291protected:
294
296
299
302
305
306 int SampleDimensions[3];
308 double ModelBounds[6];
310 double CapValue;
318
319 // flag to limit to one ComputeModelBounds per StartAppend
321
322 // the max distance computed during that one call
324
326
327private:
329 void operator=(const vtkImplicitModeller&) = delete;
330};
331
332#endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:59
abstract class to specify dataset behavior
Definition: vtkDataSet.h:66
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:43
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