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.
97 lines
3.0 KiB
97 lines
3.0 KiB
/*=========================================================================
|
|
|
|
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
|
|
|
|
|
|
|