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=========================================================================*/
99#ifndef vtkImplicitModeller_h
100#define vtkImplicitModeller_h
101
102#include "vtkFiltersHybridModule.h" // For export macro
103#include "vtkImageAlgorithm.h"
104#include "vtkThreads.h" // for VTK_MAX_THREADS
105
106#define VTK_VOXEL_MODE 0
107#define VTK_CELL_MODE 1
108
109class vtkDataArray;
111class vtkMultiThreader;
112
113class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
114{
115public:
117 void PrintSelf(ostream& os, vtkIndent indent) override;
118
125
130 double ComputeModelBounds(vtkDataSet* input = nullptr);
131
133
136 vtkGetVectorMacro(SampleDimensions, int, 3);
137 void SetSampleDimensions(int i, int j, int k);
138 void SetSampleDimensions(int dim[3]);
140
142
148 vtkSetClampMacro(MaximumDistance, double, 0.0, 1.0);
149 vtkGetMacro(MaximumDistance, double);
151
153
157 vtkSetVector6Macro(ModelBounds, double);
158 vtkGetVectorMacro(ModelBounds, double, 6);
160
162
168 vtkSetMacro(AdjustBounds, vtkTypeBool);
169 vtkGetMacro(AdjustBounds, vtkTypeBool);
170 vtkBooleanMacro(AdjustBounds, vtkTypeBool);
172
174
179 vtkSetClampMacro(AdjustDistance, double, -1.0, 1.0);
180 vtkGetMacro(AdjustDistance, double);
182
184
188 vtkSetMacro(Capping, vtkTypeBool);
189 vtkGetMacro(Capping, vtkTypeBool);
190 vtkBooleanMacro(Capping, vtkTypeBool);
192
194
198 void SetCapValue(double value);
199 vtkGetMacro(CapValue, double);
201
203
213 vtkSetMacro(ScaleToMaximumDistance, vtkTypeBool);
214 vtkGetMacro(ScaleToMaximumDistance, vtkTypeBool);
215 vtkBooleanMacro(ScaleToMaximumDistance, vtkTypeBool);
217
219
226 vtkSetClampMacro(ProcessMode, int, 0, 1);
227 vtkGetMacro(ProcessMode, int);
228 void SetProcessModeToPerVoxel() { this->SetProcessMode(VTK_VOXEL_MODE); }
229 void SetProcessModeToPerCell() { this->SetProcessMode(VTK_CELL_MODE); }
230 const char* GetProcessModeAsString(void);
232
234
238 vtkSetMacro(LocatorMaxLevel, int);
239 vtkGetMacro(LocatorMaxLevel, int);
241
243
246 vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS);
247 vtkGetMacro(NumberOfThreads, int);
249
251
254 void SetOutputScalarType(int type);
255 vtkGetMacro(OutputScalarType, int);
256 void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
257 void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
258 void SetOutputScalarTypeToInt() { this->SetOutputScalarType(VTK_INT); }
259 void SetOutputScalarTypeToUnsignedInt() { this->SetOutputScalarType(VTK_UNSIGNED_INT); }
260 void SetOutputScalarTypeToLong() { this->SetOutputScalarType(VTK_LONG); }
261 void SetOutputScalarTypeToUnsignedLong() { this->SetOutputScalarType(VTK_UNSIGNED_LONG); }
262 void SetOutputScalarTypeToShort() { this->SetOutputScalarType(VTK_SHORT); }
263 void SetOutputScalarTypeToUnsignedShort() { this->SetOutputScalarType(VTK_UNSIGNED_SHORT); }
264 void SetOutputScalarTypeToUnsignedChar() { this->SetOutputScalarType(VTK_UNSIGNED_CHAR); }
265 void SetOutputScalarTypeToChar() { this->SetOutputScalarType(VTK_CHAR); }
267
275
283 void Append(vtkDataSet* input);
284
288 void EndAppend();
289
290 // See the vtkAlgorithm for a description of what these do
293
294protected:
297
298 double GetScalarTypeMax(int type);
299
302
305
308
309 int SampleDimensions[3];
311 double ModelBounds[6];
313 double CapValue;
321
322 // flag to limit to one ComputeModelBounds per StartAppend
324
325 // the max distance computed during that one call
327
329
330private:
332 void operator=(const vtkImplicitModeller&) = delete;
333};
334
335#endif
abstract superclass for arrays of numeric data
abstract class to specify dataset behavior
Definition vtkDataSet.h:72
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.
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:49
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
A class for performing multithreaded execution.
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