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.
120 lines
3.4 KiB
C++
120 lines
3.4 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkHyperTreeGridAxisReflection.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 vtkHyperTreeGridAxisReflection
|
|
* @brief Reflect a hyper tree grid
|
|
*
|
|
*
|
|
* This filter reflect the cells of a hyper tree grid with respect to
|
|
* one of the planes parallel to the bounding box of the data set.
|
|
*
|
|
* @sa
|
|
* vtkHyperTreeGrid vtkHyperTreeGridAlgorithm vtkReflectionFilter
|
|
*
|
|
* @par Thanks:
|
|
* This class was written by Philippe Pebay based on a idea of Guenole
|
|
* Harel and Jacques-Bernard Lekien, 2016
|
|
* This work was supported by Commissariat a l'Energie Atomique (CEA/DIF)
|
|
*/
|
|
|
|
#ifndef vtkHyperTreeGridAxisReflection_h
|
|
#define vtkHyperTreeGridAxisReflection_h
|
|
|
|
#include "vtkFiltersHyperTreeModule.h" // For export macro
|
|
#include "vtkHyperTreeGridAlgorithm.h"
|
|
|
|
class vtkHyperTreeGrid;
|
|
|
|
class VTKFILTERSHYPERTREE_EXPORT vtkHyperTreeGridAxisReflection : public vtkHyperTreeGridAlgorithm
|
|
{
|
|
public:
|
|
static vtkHyperTreeGridAxisReflection* New();
|
|
vtkTypeMacro(vtkHyperTreeGridAxisReflection, vtkHyperTreeGridAlgorithm);
|
|
void PrintSelf(ostream&, vtkIndent) override;
|
|
|
|
/**
|
|
* Specify unique identifiers of available reflection planes.
|
|
*/
|
|
enum AxisReflectionPlane
|
|
{
|
|
USE_X_MIN = 0,
|
|
USE_Y_MIN = 1,
|
|
USE_Z_MIN = 2,
|
|
USE_X_MAX = 3,
|
|
USE_Y_MAX = 4,
|
|
USE_Z_MAX = 5,
|
|
USE_X = 6,
|
|
USE_Y = 7,
|
|
USE_Z = 8
|
|
};
|
|
|
|
//@{
|
|
/**
|
|
* Set the normal of the plane to use as mirror.
|
|
*/
|
|
vtkSetClampMacro(Plane, int, 0, 8);
|
|
vtkGetMacro(Plane, int);
|
|
void SetPlaneToX() { this->SetPlane(USE_X); }
|
|
void SetPlaneToY() { this->SetPlane(USE_Y); }
|
|
void SetPlaneToZ() { this->SetPlane(USE_Z); }
|
|
void SetPlaneToXMin() { this->SetPlane(USE_X_MIN); }
|
|
void SetPlaneToYMin() { this->SetPlane(USE_Y_MIN); }
|
|
void SetPlaneToZMin() { this->SetPlane(USE_Z_MIN); }
|
|
void SetPlaneToXMax() { this->SetPlane(USE_X_MAX); }
|
|
void SetPlaneToYMax() { this->SetPlane(USE_Y_MAX); }
|
|
void SetPlaneToZMax() { this->SetPlane(USE_Z_MAX); }
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* If the reflection plane is set to X, Y or Z, this variable
|
|
* is use to set the position of the plane.
|
|
*/
|
|
vtkSetMacro(Center, double);
|
|
vtkGetMacro(Center, double);
|
|
//@}
|
|
|
|
protected:
|
|
vtkHyperTreeGridAxisReflection();
|
|
~vtkHyperTreeGridAxisReflection() override;
|
|
|
|
/**
|
|
* For this algorithm the output is a vtkHyperTreeGrid instance
|
|
*/
|
|
int FillOutputPortInformation(int, vtkInformation*) override;
|
|
|
|
/**
|
|
* Main routine to extract cells based on reflectioned value
|
|
*/
|
|
int ProcessTrees(vtkHyperTreeGrid*, vtkDataObject*) override;
|
|
|
|
/**
|
|
* Required type of plane reflection
|
|
*/
|
|
int Plane;
|
|
|
|
/**
|
|
* Position of the plane relative to given axis
|
|
* Only used if the reflection plane is X, Y or Z
|
|
*/
|
|
double Center;
|
|
|
|
private:
|
|
vtkHyperTreeGridAxisReflection(const vtkHyperTreeGridAxisReflection&) = delete;
|
|
void operator=(const vtkHyperTreeGridAxisReflection&) = delete;
|
|
};
|
|
|
|
#endif /* vtkHyperTreeGridAxisReflection */
|