You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
4.6 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkProbePolyhedron.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.
=========================================================================*/
/**
* @class vtkProbePolyhedron
* @brief probe/interpolate data values in the interior,
* exterior or of the surface of a closed, manifold polyhedron
*
* vtkProbePolyhedron is a filter that computes point attributes (e.g.,
* scalars, vectors, etc.) at specified point positions. The filter has two
* inputs: the Input and Source. The Source geometric structure is passed
* through the filter. The point attributes are computed at the Input point
* positions by interpolating into the source data. In this filter, the
* Source is always a closed, non-self-intersecting, polyhedral mesh. For
* example, we can compute data values on a plane (plane specified as Input)
* from a triangle mesh (e.g., output of marching cubes).
*
* This filter can be used to resample data from a mesh onto a different
* dataset type. For example, a polyhedral mesh (vtkPolyData) can be probed
* with a volume (three-dimensional vtkImageData), and then volume rendering
* techniques can be used to visualize the results. Another example: a line
* or curve can be used to probe a mesh to produce x-y plots along that line or
* curve.
*
* @warning
* Note that cell data is not interpolated from the source. If you need cell data,
* you can always use vtkPointDataToCellData and/or vtkCellDataToPointData in
* various combinations.
*
* @warning
* Note that the filter interpolates from a mesh to points interior, exterior
* or on the surface of the mesh. This process is necessarily an
* approximation. Currently the approach of Mean Value Coordinates is used,
* but this filter may be extended in the future to use other methods.
*
*
* @sa
* vtkProbeFilter vtkMeanValueCoordinatesInterpolator vtkPolyhedron
*/
#ifndef vtkProbePolyhedron_h
#define vtkProbePolyhedron_h
#include "vtkDataSetAlgorithm.h"
#include "vtkDataSetAttributes.h" // needed for vtkDataSetAttributes::FieldList
#include "vtkFiltersGeneralModule.h" // For export macro
class vtkIdTypeArray;
class vtkCharArray;
class vtkMaskPoints;
class VTKFILTERSGENERAL_EXPORT vtkProbePolyhedron : public vtkDataSetAlgorithm
{
public:
//@{
/**
* Standard methods for instantiable (i.e., concrete) class.
*/
static vtkProbePolyhedron* New();
vtkTypeMacro(vtkProbePolyhedron, vtkDataSetAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@}
//@{
/**
* Specify the point locations used to probe input. Any geometry
* can be used.
*/
void SetSourceData(vtkPolyData* source);
vtkPolyData* GetSource();
//@}
/**
* Specify the point locations used to probe input. Any geometry
* can be used. New style. Equivalent to SetInputConnection(1, algOutput).
*/
void SetSourceConnection(vtkAlgorithmOutput* algOutput);
//@{
/**
* Specify whether to probe (and hence produce) point data. The
* interpolated point data of the source will produce the output
* point data (output points are passed from the input points).
*/
vtkSetMacro(ProbePointData, vtkTypeBool);
vtkGetMacro(ProbePointData, vtkTypeBool);
vtkBooleanMacro(ProbePointData, vtkTypeBool);
//@}
//@{
/**
* Specify whether to probe (and hence produce) cell data. The
* interpolated point data of the source will produce the output
* cell data (output cells are passed from the input cells). Note
* that the probing of the input uses the centers of the cells as
* the probe position.
*/
vtkSetMacro(ProbeCellData, vtkTypeBool);
vtkGetMacro(ProbeCellData, vtkTypeBool);
vtkBooleanMacro(ProbeCellData, vtkTypeBool);
//@}
protected:
vtkProbePolyhedron();
~vtkProbePolyhedron() override;
vtkTypeBool ProbePointData;
vtkTypeBool ProbeCellData;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int RequestUpdateExtent(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
private:
vtkProbePolyhedron(const vtkProbePolyhedron&) = delete;
void operator=(const vtkProbePolyhedron&) = delete;
};
#endif