VTK  9.0.1
vtkCheckerboardSplatter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCheckerboardSplatter.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 =========================================================================*/
95 #ifndef vtkCheckerboardSplatter_h
96 #define vtkCheckerboardSplatter_h
97 
98 #include "vtkImageAlgorithm.h"
99 #include "vtkImagingHybridModule.h" // For export macro
100 
101 #define VTK_ACCUMULATION_MODE_MIN 0
102 #define VTK_ACCUMULATION_MODE_MAX 1
103 #define VTK_ACCUMULATION_MODE_SUM 2
104 
105 class vtkDoubleArray;
106 class vtkCompositeDataSet;
107 
108 class VTKIMAGINGHYBRID_EXPORT vtkCheckerboardSplatter : public vtkImageAlgorithm
109 {
110 public:
112  void PrintSelf(ostream& os, vtkIndent indent) override;
113 
120 
122 
126  void SetSampleDimensions(int i, int j, int k);
127  void SetSampleDimensions(int dim[3]);
128  vtkGetVectorMacro(SampleDimensions, int, 3);
130 
132 
138  vtkSetVector6Macro(ModelBounds, double);
139  vtkGetVectorMacro(ModelBounds, double, 6);
141 
143 
153  vtkSetClampMacro(Footprint, int, 0, VTK_INT_MAX);
154  vtkGetMacro(Footprint, int);
156 
158 
164  vtkSetClampMacro(Radius, double, 0.0, VTK_DOUBLE_MAX);
165  vtkGetMacro(Radius, double);
167 
169 
174  vtkSetClampMacro(ScaleFactor, double, 0.0, VTK_DOUBLE_MAX);
175  vtkGetMacro(ScaleFactor, double);
177 
179 
184  vtkSetMacro(ExponentFactor, double);
185  vtkGetMacro(ExponentFactor, double);
187 
189 
192  vtkSetMacro(ScalarWarping, vtkTypeBool);
193  vtkGetMacro(ScalarWarping, vtkTypeBool);
194  vtkBooleanMacro(ScalarWarping, vtkTypeBool);
196 
198 
203  vtkSetMacro(NormalWarping, vtkTypeBool);
204  vtkGetMacro(NormalWarping, vtkTypeBool);
205  vtkBooleanMacro(NormalWarping, vtkTypeBool);
207 
209 
216  vtkSetClampMacro(Eccentricity, double, 0.001, VTK_DOUBLE_MAX);
217  vtkGetMacro(Eccentricity, double);
219 
221 
229  vtkSetClampMacro(AccumulationMode, int, VTK_ACCUMULATION_MODE_MIN, VTK_ACCUMULATION_MODE_SUM);
230  vtkGetMacro(AccumulationMode, int);
231  void SetAccumulationModeToMin() { this->SetAccumulationMode(VTK_ACCUMULATION_MODE_MIN); }
232  void SetAccumulationModeToMax() { this->SetAccumulationMode(VTK_ACCUMULATION_MODE_MAX); }
233  void SetAccumulationModeToSum() { this->SetAccumulationMode(VTK_ACCUMULATION_MODE_SUM); }
236 
238 
243  vtkSetMacro(OutputScalarType, int);
244  vtkGetMacro(OutputScalarType, int);
245  void SetOutputScalarTypeToDouble() { this->SetOutputScalarType(VTK_DOUBLE); }
246  void SetOutputScalarTypeToFloat() { this->SetOutputScalarType(VTK_FLOAT); }
248 
250 
255  vtkSetMacro(Capping, vtkTypeBool);
256  vtkGetMacro(Capping, vtkTypeBool);
257  vtkBooleanMacro(Capping, vtkTypeBool);
259 
261 
265  vtkSetMacro(CapValue, double);
266  vtkGetMacro(CapValue, double);
268 
270 
277  vtkSetMacro(NullValue, double);
278  vtkGetMacro(NullValue, double);
280 
282 
289  vtkSetClampMacro(MaximumDimension, int, 0, 255);
290  vtkGetMacro(MaximumDimension, int);
292 
294 
301  vtkSetClampMacro(ParallelSplatCrossover, int, 0, 255);
302  vtkGetMacro(ParallelSplatCrossover, int);
304 
309  void ComputeModelBounds(vtkDataSet* input, vtkImageData* output, vtkInformation* outInfo);
310 
311 protected:
314 
318 
319  int OutputScalarType; // the type of output scalars
320  int SampleDimensions[3]; // dimensions of volume to splat into
321  double Radius; // Radius factor in the Gaussian exponential function
322  int Footprint; // maximum distance splat propagates (in voxels 0->Dim)
323  double ExponentFactor; // scale exponent of gaussian function
324  double ModelBounds[6]; // bounding box of splatting dimensions
325  double Origin[3], Spacing[3]; // output geometry
326  vtkTypeBool NormalWarping; // on/off warping of splat via normal
327  double Eccentricity; // elliptic distortion due to normals
328  vtkTypeBool ScalarWarping; // on/off warping of splat via scalar
329  double ScaleFactor; // splat size influenced by scale factor
330  vtkTypeBool Capping; // Cap side of volume to close surfaces
331  double CapValue; // value to use for capping
332  int AccumulationMode; // how to combine scalar values
333  double NullValue; // initial value of voxels
334  unsigned char MaximumDimension; // max resolution of checkerboard
335  int ParallelSplatCrossover; // the point at which parallel splatting occurs
336 
337 private:
339  void operator=(const vtkCheckerboardSplatter&) = delete;
340 };
341 
342 #endif
splat points into a volume with an elliptical, Gaussian distribution
void SetSampleDimensions(int i, int j, int k)
Set / get the dimensions of the sampling structured point set.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called in response to a REQUEST_DATA request from the executive.
static vtkCheckerboardSplatter * New()
Construct object with dimensions=(50,50,50); automatic computation of bounds; a Footprint of 2; a Rad...
const char * GetAccumulationModeAsString()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetSampleDimensions(int dim[3])
void ComputeModelBounds(vtkDataSet *input, vtkImageData *output, vtkInformation *outInfo)
Compute the size of the sample bounding box automatically from the input data.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
abstract superclass for composite (multi-block or AMR) datasets
abstract class to specify dataset behavior
Definition: vtkDataSet.h:57
dynamic, self-adjusting array of double
Generic algorithm superclass for image algs.
topologically and geometrically regular array of data
Definition: vtkImageData.h:42
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
@ info
Definition: vtkX3D.h:382
@ port
Definition: vtkX3D.h:453
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_ACCUMULATION_MODE_SUM
#define VTK_ACCUMULATION_MODE_MIN
#define VTK_ACCUMULATION_MODE_MAX
#define VTK_DOUBLE
Definition: vtkType.h:53
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165
#define VTK_FLOAT
Definition: vtkType.h:52
#define VTK_INT_MAX
Definition: vtkType.h:155