Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.0 KiB

2 years ago
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkReflectionFilter.h,v $
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.
=========================================================================*/
// .NAME vtkReflectionFilter - reflects a data set across a plane
// .SECTION Description
// The vtkReflectionFilter reflects a data set across one of the
// planes formed by the data set's bounding box.
// Since it converts data sets into unstructured grids, it is not effeicient
// for structured data sets.
#ifndef __vtkReflectionFilter_h
#define __vtkReflectionFilter_h
#include "vtkUnstructuredGridAlgorithm.h"
class VTK_GRAPHICS_EXPORT vtkReflectionFilter : public vtkUnstructuredGridAlgorithm
{
public:
static vtkReflectionFilter *New();
vtkTypeRevisionMacro(vtkReflectionFilter, vtkUnstructuredGridAlgorithm);
void PrintSelf(ostream &os, vtkIndent indent);
//BTX
enum ReflectionPlane
{
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
};
//ETX
// Description:
// 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); };
// Description:
// 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);
// Description:
// If on (the default), copy the input geometry to the output. If off,
// the output will only contain the reflection.
vtkSetMacro(CopyInput, int);
vtkGetMacro(CopyInput, int);
vtkBooleanMacro(CopyInput, int);
protected:
vtkReflectionFilter();
~vtkReflectionFilter();
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
virtual int FillInputPortInformation(int port, vtkInformation *info);
int Plane;
double Center;
int CopyInput;
void FlipVector(double tuple[3], int mirrorDir[3]);
private:
vtkReflectionFilter(const vtkReflectionFilter&); // Not implemented
void operator=(const vtkReflectionFilter&); // Not implemented
};
#endif