VTK  9.0.1
vtkHyperTreeGridAxisClip.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkHyperTreeGridAxisClip.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
34 #ifndef vtkHyperTreeGridAxisClip_h
35 #define vtkHyperTreeGridAxisClip_h
36 
37 #include "vtkFiltersHyperTreeModule.h" // For export macro
39 
40 class vtkBitArray;
41 class vtkHyperTreeGrid;
42 class vtkQuadric;
45 
46 class VTKFILTERSHYPERTREE_EXPORT vtkHyperTreeGridAxisClip : public vtkHyperTreeGridAlgorithm
47 {
48 public:
51  void PrintSelf(ostream&, vtkIndent) override;
52 
59  enum ClipType
60  {
61  PLANE = 0,
62  BOX,
64  };
65 
67 
71  vtkSetClampMacro(ClipType, int, 0, 2);
72  vtkGetMacro(ClipType, int);
73  void SetClipTypeToPlane() { this->SetClipType(vtkHyperTreeGridAxisClip::PLANE); }
74  void SetClipTypeToBox() { this->SetClipType(vtkHyperTreeGridAxisClip::BOX); }
77 
79 
83  vtkSetClampMacro(PlaneNormalAxis, int, 0, 2);
84  vtkGetMacro(PlaneNormalAxis, int);
86 
88 
92  vtkSetMacro(PlanePosition, double);
93  vtkGetMacro(PlanePosition, double);
95 
97 
100  vtkSetVector6Macro(Bounds, double);
101  vtkGetVectorMacro(Bounds, double, 6);
102  void GetMinimumBounds(double[3]);
103  void GetMaximumBounds(double[3]);
105 
107 
114  vtkSetMacro(InsideOut, bool);
115  vtkGetMacro(InsideOut, bool);
116  vtkBooleanMacro(InsideOut, bool);
118 
120 
123  virtual void SetQuadric(vtkQuadric*);
124  vtkGetObjectMacro(Quadric, vtkQuadric);
126 
128 
131  void SetQuadricCoefficients(double a, double b, double c, double d, double e, double f, double g,
132  double h, double i, double j)
133  {
134  double array[10] = { a, b, c, d, e, f, g, h, i, j };
135  this->SetQuadricCoefficients(array);
136  }
137  void SetQuadricCoefficients(double[10]);
138  void GetQuadricCoefficients(double[10]);
141 
145  vtkMTimeType GetMTime() override;
146 
147 protected:
150 
151  // For this algorithm the output is a vtkHyperTreeGrid instance
153 
158 
163 
169 
173  int ClipType;
174 
179 
185 
189  double Bounds[6];
190 
195 
199  bool InsideOut;
200 
206 
211 
212 private:
214  void operator=(const vtkHyperTreeGridAxisClip&) = delete;
215 };
216 
217 #endif // vtkHyperTreeGridAxisClip_h
dynamic, self-adjusting array of bits
Definition: vtkBitArray.h:34
general representation of visualization data
Definition: vtkDataObject.h:60
vtkFrustumSelector is a vtkSelector that selects elements based on whether they are inside or interse...
Superclass for algorithms that produce a hyper tree grid as output.
Axis aligned hyper tree grid clip.
void RecursivelyProcessTree(vtkHyperTreeGridNonOrientedGeometryCursor *inCursor, vtkHyperTreeGridNonOrientedCursor *outCursor)
Recursively descend into tree down to leaves.
void GetMinimumBounds(double[3])
vtkMTimeType GetMTime() override
Override GetMTime because we delegate to a vtkQuadric.
int PlaneNormalAxis
Direction of clipping plane normal.
double PlanePosition
Intercept of clipping plane along normal.
vtkIdType CurrentId
Keep track of current index in output hyper tree grid.
void PrintSelf(ostream &, vtkIndent) override
Methods invoked by print to print information about the object including superclasses.
~vtkHyperTreeGridAxisClip() override
int ClipType
Type of clip to be performed.
void SetQuadricCoefficients(double[10])
int ProcessTrees(vtkHyperTreeGrid *, vtkDataObject *) override
Main routine to generate hyper tree grid clip.
ClipType
Methods by which the hyper tree grid input may be clipped: PLANE: Clip with an axis-aligned plane def...
virtual void SetQuadric(vtkQuadric *)
Set/Get the clipping quadric function.
static vtkHyperTreeGridAxisClip * New()
double * GetQuadricCoefficients()
vtkBitArray * InMask
Output material mask constructed by this filter.
bool InsideOut
Decide what is inside versus what is out.
bool IsClipped(vtkHyperTreeGridNonOrientedGeometryCursor *)
Decide whether the cell is clipped out.
void GetMaximumBounds(double[3])
void GetQuadricCoefficients(double[10])
int FillOutputPortInformation(int, vtkInformation *) override
Fill the output port information objects for this algorithm.
void SetQuadricCoefficients(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j)
Helpers to set/get the 10 coefficients of the quadric function.
vtkQuadric * Quadric
Coefficients of axis-aligned quadric.
Objects for traversal a HyperTreeGrid.
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
a simple class to control print indentation
Definition: vtkIndent.h:34
Store vtkAlgorithm input/output information.
evaluate implicit quadric function
Definition: vtkQuadric.h:31
int vtkIdType
Definition: vtkType.h:338
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:293