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.

100 lines
3.0 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkCellCenters.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 vtkCellCenters
* @brief generate points at center of cells
*
* vtkCellCenters is a filter that takes as input any dataset and
* generates on output points at the center of the cells in the dataset.
* These points can be used for placing glyphs (vtkGlyph3D) or labeling
* (vtkLabeledDataMapper). (The center is the parametric center of the
* cell, not necessarily the geometric or bounding box center.) The cell
* attributes will be associated with the points on output.
*
* @warning
* You can choose to generate just points or points and vertex cells.
* Vertex cells are drawn during rendering; points are not. Use the ivar
* VertexCells to generate cells.
*
* @note
* Empty cells will be ignored but will require a one by one cell to
* point data copy that will make the processing slower.
*
* @sa
* vtkGlyph3D vtkLabeledDataMapper
*/
#ifndef vtkCellCenters_h
#define vtkCellCenters_h
#include "vtkFiltersCoreModule.h" // For export macro
#include "vtkPolyDataAlgorithm.h"
class vtkDoubleArray;
class VTKFILTERSCORE_EXPORT vtkCellCenters : public vtkPolyDataAlgorithm
{
public:
vtkTypeMacro(vtkCellCenters, vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Construct object with vertex cell generation turned off.
*/
static vtkCellCenters* New();
//@{
/**
* Enable/disable the generation of vertex cells. The default
* is Off.
*/
vtkSetMacro(VertexCells, bool);
vtkGetMacro(VertexCells, bool);
vtkBooleanMacro(VertexCells, bool);
//@}
//@{
/**
* Enable/disable whether input cell data arrays should be passed through (or
* copied) as output point data arrays. Default is `true` i.e. the arrays will
* be propagated.
*/
vtkSetMacro(CopyArrays, bool);
vtkGetMacro(CopyArrays, bool);
vtkBooleanMacro(CopyArrays, bool);
//@}
/**
* Compute centers of cells from a dataset, storing them in the centers array.
*/
static void ComputeCellCenters(vtkDataSet* dataset, vtkDoubleArray* centers);
protected:
vtkCellCenters() = default;
~vtkCellCenters() override = default;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int FillInputPortInformation(int port, vtkInformation* info) override;
bool VertexCells = false;
bool CopyArrays = true;
private:
vtkCellCenters(const vtkCellCenters&) = delete;
void operator=(const vtkCellCenters&) = delete;
};
#endif