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
131 lines
4.6 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
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
|