comac_desk_app/ThirdpartyLibs/Libs/windows-x86_64/vtk/include/vtkResampleWithDataSet.h

195 lines
6.4 KiB
C
Raw Permalink Normal View History

2024-11-21 11:50:43 +08:00
/*=========================================================================
Program: Visualization Toolkit
Module: vtkResampleWithDataSet.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 vtkResampleWithDataSet
* @brief sample point and cell data of a dataset on
* points from another dataset.
*
* Similar to vtkCompositeDataProbeFilter, vtkResampleWithDataSet takes two
* inputs - Input and Source, and samples the point and cell values of Source
* on to the point locations of Input. The output has the same structure as
* Input but its point data have the resampled values from Source. Unlike
* vtkCompositeDataProbeFilter, this filter support composite datasets for both
* Input and Source.
* @sa
* vtkCompositeDataProbeFilter vtkResampleToImage
*/
#ifndef vtkResampleWithDataSet_h
#define vtkResampleWithDataSet_h
#include "vtkFiltersCoreModule.h" // For export macro
#include "vtkNew.h" // For vtkCompositeDataProbeFilter member variable
#include "vtkPassInputTypeAlgorithm.h"
class vtkAbstractCellLocator;
class vtkCompositeDataProbeFilter;
class vtkDataSet;
class VTKFILTERSCORE_EXPORT vtkResampleWithDataSet : public vtkPassInputTypeAlgorithm
{
public:
vtkTypeMacro(vtkResampleWithDataSet, vtkPassInputTypeAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
static vtkResampleWithDataSet* New();
/**
* Specify the data set that will be probed at the input points.
* The Input gives the geometry (the points and cells) for the output,
* while the Source is probed (interpolated) to generate the scalars,
* vectors, etc. for the output points based on the point locations.
*/
void SetSourceData(vtkDataObject* source);
/**
* Specify the data set that will be probed at the input points.
* The Input gives the geometry (the points and cells) for the output,
* while the Source is probed (interpolated) to generate the scalars,
* vectors, etc. for the output points based on the point locations.
*/
void SetSourceConnection(vtkAlgorithmOutput* algOutput);
///@{
/**
* Control whether the source point data is to be treated as categorical. If
* the data is categorical, then the resultant data will be determined by
* a nearest neighbor interpolation scheme.
*/
void SetCategoricalData(bool arg);
bool GetCategoricalData();
///@}
///@{
/**
* Shallow copy the input cell data arrays to the output.
* Off by default.
*/
void SetPassCellArrays(bool arg);
bool GetPassCellArrays();
vtkBooleanMacro(PassCellArrays, bool);
///@}
///@{
/**
* Shallow copy the input point data arrays to the output
* Off by default.
*/
void SetPassPointArrays(bool arg);
bool GetPassPointArrays();
vtkBooleanMacro(PassPointArrays, bool);
///@}
///@{
/**
* Set whether to pass the field-data arrays from the Input i.e. the input
* providing the geometry to the output. On by default.
*/
void SetPassFieldArrays(bool arg);
bool GetPassFieldArrays();
vtkBooleanMacro(PassFieldArrays, bool);
///@}
///@{
/**
* When sampling from composite datasets, partial arrays are common i.e.
* data-arrays that are not available in all of the blocks. By default, this
* filter only passes those point and cell data-arrays that are available in
* all the blocks i.e. partial arrays are removed. When PassPartialArrays is
* turned on, this behavior is changed to take a union of all arrays present
* thus partial arrays are passed as well. However, for composite dataset
* input, this filter still produces a non-composite output. For all those
* locations in a block of where a particular data array is missing, this
* filter uses vtkMath::Nan() for double and float arrays, and 0 for all
* other types of arrays e.g. int, char, etc. Off by default.
*/
void SetPassPartialArrays(bool arg);
bool GetPassPartialArrays();
vtkBooleanMacro(PassPartialArrays, bool);
//@}
//@{
/**
* Set the tolerance used to compute whether a point in the
* source is in a cell of the input. This value is only used
* if ComputeTolerance is off.
*/
void SetTolerance(double arg);
double GetTolerance();
///@}
///@{
/**
* Set whether to use the Tolerance field or precompute the tolerance.
* When on, the tolerance will be computed and the field
* value is ignored. Off by default.
*/
void SetComputeTolerance(bool arg);
bool GetComputeTolerance();
vtkBooleanMacro(ComputeTolerance, bool);
///@}
///@{
/**
* Set whether points without resampled values, and their corresponding cells,
* should be marked as Blank. Default is On.
*/
vtkSetMacro(MarkBlankPointsAndCells, bool);
vtkGetMacro(MarkBlankPointsAndCells, bool);
vtkBooleanMacro(MarkBlankPointsAndCells, bool);
///@}
///@{
/*
* Set/Get the prototype cell locator to use for probing the source dataset.
* The value is forwarded to the underlying probe filter.
*/
virtual void SetCellLocatorPrototype(vtkAbstractCellLocator*);
virtual vtkAbstractCellLocator* GetCellLocatorPrototype() const;
///@}
vtkMTimeType GetMTime() override;
protected:
vtkResampleWithDataSet();
~vtkResampleWithDataSet() override;
// Usual data generation method
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int RequestUpdateExtent(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int FillInputPortInformation(int, vtkInformation*) override;
int FillOutputPortInformation(int, vtkInformation*) override;
/**
* Get the name of the valid-points mask array.
*/
const char* GetMaskArrayName() const;
/**
* Mark invalid points and cells of output DataSet as hidden
*/
void SetBlankPointsAndCells(vtkDataSet* data);
vtkNew<vtkCompositeDataProbeFilter> Prober;
bool MarkBlankPointsAndCells;
private:
vtkResampleWithDataSet(const vtkResampleWithDataSet&) = delete;
void operator=(const vtkResampleWithDataSet&) = delete;
};
#endif // vtkResampleWithDataSet_h