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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
/*=========================================================================
Program: Visualization Toolkit
Module: vtkGradientFilter.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.
=========================================================================*/
/*----------------------------------------------------------------------------
Copyright (c) Sandia Corporation
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
----------------------------------------------------------------------------*/
// .NAME vtkGradientFilter - A general filter for gradient estimation.
//
// .SECTION Description
// Estimates the gradient of a field in a data set. The gradient calculation
// is dependent on the input dataset type. The created gradient array
// is of the same type as the array it is calculated from (e.g. point data
// or cell data) as well as data type (e.g. float, double). At the boundary
// the gradient is not central differencing. The output array has
// 3*number of components of the input data array. The ordering for the
// output tuple will be {du/dx, du/dy, du/dz, dv/dx, dv/dy, dv/dz, dw/dx,
// dw/dy, dw/dz} for an input array {u, v, w}.
#ifndef __vtkGradientFilter_h
#define __vtkGradientFilter_h
#include "vtkDataSetAlgorithm.h"
class VTK_GRAPHICS_EXPORT vtkGradientFilter : public vtkDataSetAlgorithm
{
public:
vtkTypeMacro(vtkGradientFilter, vtkDataSetAlgorithm);
virtual void PrintSelf(ostream &os, vtkIndent indent);
static vtkGradientFilter *New();
// Description:
// These are basically a convenience method that calls SetInputArrayToProcess
// to set the array used as the input scalars. The fieldAssociation comes
// from the vtkDataObject::FieldAssocations enum. The fieldAttributeType
// comes from the vtkDataSetAttributes::AttributeTypes enum.
virtual void SetInputScalars(int fieldAssociation, const char *name);
virtual void SetInputScalars(int fieldAssociation, int fieldAttributeType);
// Description:
// Get/Set the name of the resulting array to create. If NULL (the
// default) then the output array will be named "Gradients".
vtkGetStringMacro(ResultArrayName);
vtkSetStringMacro(ResultArrayName);
// Description:
// When this flag is on (default is off), the gradient filter will provide a
// less accurate (but close) algorithm that performs fewer derivative
// calculations (and is therefore faster). The error contains some smoothing
// of the output data and some possible errors on the boundary. This
// parameter has no effect when performing the gradient of cell data.
// This only applies if the input grid is a vtkUnstructuredGrid or a
// vtkPolyData.
vtkGetMacro(FasterApproximation, int);
vtkSetMacro(FasterApproximation, int);
vtkBooleanMacro(FasterApproximation, int);
// Description:
// Set the resultant array to be vorticity/curl of the input
// array. The input array must have 3 components.
vtkSetMacro(ComputeVorticity, int);
vtkGetMacro(ComputeVorticity, int);
vtkBooleanMacro(ComputeVorticity, int);
protected:
vtkGradientFilter();
~vtkGradientFilter();
virtual int RequestUpdateExtent(vtkInformation *,
vtkInformationVector **,
vtkInformationVector *);
virtual int RequestData(vtkInformation *, vtkInformationVector **,
vtkInformationVector *);
// Description:
// Compute the gradients for grids that are not a vtkImageData,
// vtkRectilinearGrid, or vtkStructuredGrid.
// Returns non-zero if the operation was successful.
virtual int ComputeUnstructuredGridGradient(
vtkDataArray* Array, int fieldAssociation, vtkDataSet* input,
vtkDataSet* output);
// Description:
// Compute the gradients for either a vtkImageData, vtkRectilinearGrid or
// a vtkStructuredGrid. Computes the gradient using finite differences.
// Returns non-zero if the operation was successful.
virtual int ComputeRegularGridGradient(
vtkDataArray* Array, int fieldAssociation, vtkDataSet* output);
// Description:
// If non-null then it contains the name of the outputted gradient array
char *ResultArrayName;
// Description:
// When this flag is on (default is off), the gradient filter will provide a
// less accurate (but close) algorithm that performs fewer derivative
// calculations (and is therefore faster). The error contains some smoothing
// of the output data and some possible errors on the boundary. This
// parameter has no effect when performing the gradient of cell data.
// This only applies if the input grid is a vtkUnstructuredGrid or a
// vtkPolyData.
int FasterApproximation;
// Description:
// Flag to indicate that vorticity/curl of the input vector is to
// be computed. The input array to be processed must have
// 3 components. By default ComputeVorticity is off.
int ComputeVorticity;
private:
vtkGradientFilter(const vtkGradientFilter &); // Not implemented
void operator=(const vtkGradientFilter &); // Not implemented
};
#endif //_vtkGradientFilter_h
|