VTK
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 =========================================================================*/
87 #ifndef vtkImplicitModeller_h
88 #define vtkImplicitModeller_h
89 
90 #include "vtkFiltersHybridModule.h" // For export macro
91 #include "vtkImageAlgorithm.h"
92 
93 #define VTK_VOXEL_MODE 0
94 #define VTK_CELL_MODE 1
95 
96 class vtkDataArray;
97 class vtkExtractGeometry;
98 class vtkMultiThreader;
99 
100 class VTKFILTERSHYBRID_EXPORT vtkImplicitModeller : public vtkImageAlgorithm
101 {
102 public:
104  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
105 
111  static vtkImplicitModeller *New();
112 
117  double ComputeModelBounds(vtkDataSet *input = NULL);
118 
120 
123  vtkGetVectorMacro(SampleDimensions,int,3);
124  void SetSampleDimensions(int i, int j, int k);
125  void SetSampleDimensions(int dim[3]);
127 
129 
135  vtkSetClampMacro(MaximumDistance,double,0.0,1.0);
136  vtkGetMacro(MaximumDistance,double);
138 
140 
144  vtkSetVector6Macro(ModelBounds,double);
145  vtkGetVectorMacro(ModelBounds,double,6);
147 
149 
155  vtkSetMacro(AdjustBounds,int);
156  vtkGetMacro(AdjustBounds,int);
157  vtkBooleanMacro(AdjustBounds,int);
159 
161 
166  vtkSetClampMacro(AdjustDistance,double,-1.0,1.0);
167  vtkGetMacro(AdjustDistance,double);
169 
171 
175  vtkSetMacro(Capping,int);
176  vtkGetMacro(Capping,int);
177  vtkBooleanMacro(Capping,int);
179 
181 
185  void SetCapValue(double value);
186  vtkGetMacro(CapValue,double);
188 
190 
200  vtkSetMacro(ScaleToMaximumDistance, int);
201  vtkGetMacro(ScaleToMaximumDistance, int);
202  vtkBooleanMacro(ScaleToMaximumDistance,int);
204 
206 
213  vtkSetClampMacro(ProcessMode, int, 0, 1);
214  vtkGetMacro(ProcessMode, int);
215  void SetProcessModeToPerVoxel() {this->SetProcessMode(VTK_VOXEL_MODE);}
216  void SetProcessModeToPerCell() {this->SetProcessMode(VTK_CELL_MODE);}
217  const char *GetProcessModeAsString(void);
219 
221 
225  vtkSetMacro(LocatorMaxLevel,int);
226  vtkGetMacro(LocatorMaxLevel,int);
228 
230 
233  vtkSetClampMacro( NumberOfThreads, int, 1, VTK_MAX_THREADS );
234  vtkGetMacro( NumberOfThreads, int );
236 
238 
241  void SetOutputScalarType(int type);
242  vtkGetMacro(OutputScalarType,int);
243  void SetOutputScalarTypeToFloat(){this->SetOutputScalarType(VTK_FLOAT);};
244  void SetOutputScalarTypeToDouble(){this->SetOutputScalarType(VTK_DOUBLE);};
245  void SetOutputScalarTypeToInt(){this->SetOutputScalarType(VTK_INT);};
247  {this->SetOutputScalarType(VTK_UNSIGNED_INT);};
248  void SetOutputScalarTypeToLong(){this->SetOutputScalarType(VTK_LONG);};
250  {this->SetOutputScalarType(VTK_UNSIGNED_LONG);};
251  void SetOutputScalarTypeToShort(){this->SetOutputScalarType(VTK_SHORT);};
253  {this->SetOutputScalarType(VTK_UNSIGNED_SHORT);};
255  {this->SetOutputScalarType(VTK_UNSIGNED_CHAR);};
257  {this->SetOutputScalarType(VTK_CHAR);};
259 
266  void StartAppend();
267 
275  void Append(vtkDataSet *input);
276 
280  void EndAppend();
281 
282  // See the vtkAlgorithm for a desciption of what these do
285  vtkInformationVector*) VTK_OVERRIDE;
286 
287 protected:
289  ~vtkImplicitModeller() VTK_OVERRIDE;
290 
291  double GetScalarTypeMax(int type);
292 
295  vtkInformationVector *) VTK_OVERRIDE;
297  vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
298 
299  void StartAppend(int internal);
300  void Cap(vtkDataArray *s);
301 
304 
305  int SampleDimensions[3];
307  double ModelBounds[6];
308  int Capping;
309  double CapValue;
317 
318  // flag to limit to one ComputeModelBounds per StartAppend
320 
321  // the max distance computed during that one call
323 
324  int FillInputPortInformation(int, vtkInformation*) VTK_OVERRIDE;
325 
326 private:
327  vtkImplicitModeller(const vtkImplicitModeller&) VTK_DELETE_FUNCTION;
328  void operator=(const vtkImplicitModeller&) VTK_DELETE_FUNCTION;
329 };
330 
331 #endif
332 
333 
#define VTK_UNSIGNED_INT
Definition: vtkType.h:55
compute distance from input geometry on structured point dataset
Store vtkAlgorithm input/output information.
#define VTK_UNSIGNED_SHORT
Definition: vtkType.h:53
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
A class for performing multithreaded execution.
void SetProcessModeToPerCell()
Specify whether to visit each cell once per append or each voxel once per append. ...
void SetOutputScalarTypeToDouble()
Set the desired output scalar type.
void SetOutputScalarTypeToUnsignedChar()
Set the desired output scalar type.
#define VTK_DOUBLE
Definition: vtkType.h:59
void SetOutputScalarTypeToUnsignedShort()
Set the desired output scalar type.
#define VTK_FLOAT
Definition: vtkType.h:58
void SetOutputScalarTypeToInt()
Set the desired output scalar type.
a simple class to control print indentation
Definition: vtkIndent.h:33
int ProcessRequest(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Process a request from the executive.
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Subclasses can reimplement this method to collect information from their inputs and set information f...
void SetOutputScalarTypeToChar()
Set the desired output scalar type.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:48
void SetOutputScalarTypeToShort()
Set the desired output scalar type.
#define VTK_SHORT
Definition: vtkType.h:52
void SetOutputScalarTypeToFloat()
Set the desired output scalar type.
#define VTK_CHAR
Definition: vtkType.h:49
#define VTK_LONG
Definition: vtkType.h:56
#define VTK_VOXEL_MODE
vtkMultiThreader * Threader
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
#define VTK_CELL_MODE
void SetOutputScalarTypeToUnsignedInt()
Set the desired output scalar type.
#define VTK_UNSIGNED_CHAR
Definition: vtkType.h:51
void SetProcessModeToPerVoxel()
Specify whether to visit each cell once per append or each voxel once per append. ...
void SetOutputScalarTypeToLong()
Set the desired output scalar type.
int FillInputPortInformation(int port, vtkInformation *info) override
These method should be reimplemented by subclasses that have more than a single input or single outpu...
Generic algorithm superclass for image algs.
Store zero or more vtkInformation instances.
static vtkAlgorithm * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
#define VTK_UNSIGNED_LONG
Definition: vtkType.h:57
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called in response to a REQUEST_DATA request from the executive.
extract cells that lie either entirely inside or outside of a specified implicit function ...
#define VTK_INT
Definition: vtkType.h:54
void SetOutputScalarTypeToUnsignedLong()
Set the desired output scalar type.