forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 26
/
vtkShepardMethod.h
115 lines (92 loc) · 4.17 KB
/
vtkShepardMethod.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*=========================================================================
Program: Visualization Toolkit
Module: vtkShepardMethod.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkShepardMethod - sample unstructured points onto structured points using the method of Shepard
// .SECTION Description
// vtkShepardMethod is a filter used to visualize unstructured point data using
// Shepard's method. The method works by resampling the unstructured points
// onto a structured points set. The influence functions are described as
// "inverse distance weighted". Once the structured points are computed, the
// usual visualization techniques (e.g., iso-contouring or volume rendering)
// can be used visualize the structured points.
// .SECTION Caveats
// The input to this filter is any dataset type. This filter can be used
// to resample any form of data, i.e., the input data need not be
// unstructured.
//
// The bounds of the data (i.e., the sample space) is automatically computed
// if not set by the user.
//
// If you use a maximum distance less than 1.0, some output points may
// never receive a contribution. The final value of these points can be
// specified with the "NullValue" instance variable.
#ifndef __vtkShepardMethod_h
#define __vtkShepardMethod_h
#include "vtkImageAlgorithm.h"
class VTK_IMAGING_EXPORT vtkShepardMethod : public vtkImageAlgorithm
{
public:
vtkTypeMacro(vtkShepardMethod,vtkImageAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Construct with sample dimensions=(50,50,50) and so that model bounds are
// automatically computed from input. Null value for each unvisited output
// point is 0.0. Maximum distance is 0.25.
static vtkShepardMethod *New();
// Description:
// Compute ModelBounds from input geometry.
double ComputeModelBounds(double origin[3], double ar[3]);
// Description:
// Specify i-j-k dimensions on which to sample input points.
vtkGetVectorMacro(SampleDimensions,int,3);
// Description:
// Set the i-j-k dimensions on which to sample the distance function.
void SetSampleDimensions(int i, int j, int k);
// Description:
// Set the i-j-k dimensions on which to sample the distance function.
void SetSampleDimensions(int dim[3]);
// Description:
// Specify influence distance of each input point. This distance is a
// fraction of the length of the diagonal of the sample space. Thus, values
// of 1.0 will cause each input point to influence all points in the
// structured point dataset. Values less than 1.0 can improve performance
// significantly.
vtkSetClampMacro(MaximumDistance,double,0.0,1.0);
vtkGetMacro(MaximumDistance,double);
// Description:
// Specify the position in space to perform the sampling.
vtkSetVector6Macro(ModelBounds,double);
vtkGetVectorMacro(ModelBounds,double,6);
// Description:
// Set the Null value for output points not receiving a contribution from the
// input points.
vtkSetMacro(NullValue,double);
vtkGetMacro(NullValue,double);
protected:
vtkShepardMethod();
~vtkShepardMethod() {};
virtual int RequestInformation (vtkInformation *,
vtkInformationVector **,
vtkInformationVector *);
// see vtkAlgorithm for details
virtual int RequestData(vtkInformation *request,
vtkInformationVector** inputVector,
vtkInformationVector* outputVector);
// see algorithm for more info
virtual int FillInputPortInformation(int port, vtkInformation* info);
int SampleDimensions[3];
double MaximumDistance;
double ModelBounds[6];
double NullValue;
private:
vtkShepardMethod(const vtkShepardMethod&); // Not implemented.
void operator=(const vtkShepardMethod&); // Not implemented.
};
#endif