VTK  9.3.1
vtkQuadRotationalExtrusionFilter.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
53 #ifndef vtkQuadRotationalExtrusionFilter_h
54 #define vtkQuadRotationalExtrusionFilter_h
55 
56 #include "vtkFiltersModelingModule.h" // For export macro
58 #include <map> // STL vector need for per block angles
59 
60 VTK_ABI_NAMESPACE_BEGIN
61 class vtkPoints;
62 class vtkPointData;
63 
64 class VTKFILTERSMODELING_EXPORT vtkQuadRotationalExtrusionFilter
66 {
67 public:
69  void PrintSelf(ostream& os, vtkIndent indent) override;
70 
77 
79  {
80  USE_X = 0,
81  USE_Y = 1,
82  USE_Z = 2
83  };
84 
86 
89  vtkSetClampMacro(Axis, int, 0, 2);
90  vtkGetMacro(Axis, int);
91  void SetAxisToX() { this->SetAxis(USE_X); }
92  void SetAxisToY() { this->SetAxis(USE_Y); }
93  void SetAxisToZ() { this->SetAxis(USE_Z); }
95 
97 
101  vtkSetClampMacro(Resolution, int, 1, VTK_INT_MAX);
102  vtkGetMacro(Resolution, int);
104 
106 
109  vtkSetMacro(Capping, vtkTypeBool);
110  vtkGetMacro(Capping, vtkTypeBool);
111  vtkBooleanMacro(Capping, vtkTypeBool);
113 
115 
118  vtkSetMacro(DefaultAngle, double);
119  vtkGetMacro(DefaultAngle, double);
121 
123 
126  void RemoveAllPerBlockAngles();
127  void AddPerBlockAngle(vtkIdType blockId, double angle);
129 
131 
134  vtkSetMacro(Translation, double);
135  vtkGetMacro(Translation, double);
137 
139 
142  vtkSetMacro(DeltaRadius, double);
143  vtkGetMacro(DeltaRadius, double);
145 
146 protected:
148  ~vtkQuadRotationalExtrusionFilter() override = default;
149 
150  int FillInputPortInformation(int, vtkInformation*) override;
152 
153  int RotateAroundAxis(double, vtkIdType, vtkPoints*, vtkPoints*, vtkPointData*, vtkPointData*);
154  int Axis;
157  double DefaultAngle;
158  double Translation;
159  double DeltaRadius;
160 
161  std::map<vtkIdType, double> PerBlockAngles;
162 
163 private:
165  void operator=(const vtkQuadRotationalExtrusionFilter&) = delete;
166 };
167 
168 VTK_ABI_NAMESPACE_END
169 #endif
represent and manipulate point attribute data
Definition: vtkPointData.h:29
Store vtkAlgorithm input/output information.
#define VTK_INT_MAX
Definition: vtkType.h:144
void SetAxisToY()
Set the axis of rotation to use.
int vtkIdType
Definition: vtkType.h:315
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
static vtkMultiBlockDataSetAlgorithm * New()
int vtkTypeBool
Definition: vtkABI.h:64
a simple class to control print indentation
Definition: vtkIndent.h:28
void SetAxisToX()
Set the axis of rotation to use.
void SetAxisToZ()
Set the axis of rotation to use.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
Store zero or more vtkInformation instances.
sweep polygonal data creating "skirt" from free edges and lines, and lines from vertices ...
represent and manipulate 3D points
Definition: vtkPoints.h:28