VTK  9.2.5
vtkRibbonFilter.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkRibbonFilter.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=========================================================================*/
39#ifndef vtkRibbonFilter_h
40#define vtkRibbonFilter_h
41
42#include "vtkFiltersModelingModule.h" // For export macro
44
45#define VTK_TCOORDS_OFF 0
46#define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
47#define VTK_TCOORDS_FROM_LENGTH 2
48#define VTK_TCOORDS_FROM_SCALARS 3
49
50class vtkCellArray;
51class vtkCellData;
52class vtkDataArray;
53class vtkFloatArray;
54class vtkPointData;
55class vtkPoints;
56
57class VTKFILTERSMODELING_EXPORT vtkRibbonFilter : public vtkPolyDataAlgorithm
58{
59public:
61 void PrintSelf(ostream& os, vtkIndent indent) override;
62
68
70
74 vtkSetClampMacro(Width, double, 0, VTK_DOUBLE_MAX);
75 vtkGetMacro(Width, double);
77
79
83 vtkSetClampMacro(Angle, double, 0, 360);
84 vtkGetMacro(Angle, double);
86
88
92 vtkSetMacro(VaryWidth, vtkTypeBool);
93 vtkGetMacro(VaryWidth, vtkTypeBool);
94 vtkBooleanMacro(VaryWidth, vtkTypeBool);
96
98
102 vtkSetMacro(WidthFactor, double);
103 vtkGetMacro(WidthFactor, double);
105
107
111 vtkSetVector3Macro(DefaultNormal, double);
112 vtkGetVectorMacro(DefaultNormal, double, 3);
114
116
120 vtkSetMacro(UseDefaultNormal, vtkTypeBool);
121 vtkGetMacro(UseDefaultNormal, vtkTypeBool);
122 vtkBooleanMacro(UseDefaultNormal, vtkTypeBool);
124
126
130 vtkSetClampMacro(GenerateTCoords, int, VTK_TCOORDS_OFF, VTK_TCOORDS_FROM_SCALARS);
131 vtkGetMacro(GenerateTCoords, int);
132 void SetGenerateTCoordsToOff() { this->SetGenerateTCoords(VTK_TCOORDS_OFF); }
134 {
135 this->SetGenerateTCoords(VTK_TCOORDS_FROM_NORMALIZED_LENGTH);
136 }
137 void SetGenerateTCoordsToUseLength() { this->SetGenerateTCoords(VTK_TCOORDS_FROM_LENGTH); }
138 void SetGenerateTCoordsToUseScalars() { this->SetGenerateTCoords(VTK_TCOORDS_FROM_SCALARS); }
141
143
149 vtkSetClampMacro(TextureLength, double, 0.000001, VTK_INT_MAX);
150 vtkGetMacro(TextureLength, double);
152
153protected:
156
158 double Width;
159 double Angle;
160 vtkTypeBool VaryWidth; // controls whether width varies with scalar data
162 double DefaultNormal[3];
164 int GenerateTCoords; // control texture coordinate generation
165 double TextureLength; // this length is mapped to [0,1) texture space
166
167 // Helper methods
168 int GeneratePoints(vtkIdType offset, vtkIdType npts, const vtkIdType* pts, vtkPoints* inPts,
169 vtkPoints* newPts, vtkPointData* pd, vtkPointData* outPD, vtkFloatArray* newNormals,
170 vtkDataArray* inScalars, double range[2], vtkDataArray* inNormals);
171 void GenerateStrip(vtkIdType offset, vtkIdType npts, const vtkIdType* pts, vtkIdType inCellId,
172 vtkCellData* cd, vtkCellData* outCD, vtkCellArray* newStrips);
173 void GenerateTextureCoords(vtkIdType offset, vtkIdType npts, const vtkIdType* pts,
174 vtkPoints* inPts, vtkDataArray* inScalars, vtkFloatArray* newTCoords);
176
177 // Helper data members
178 double Theta;
179
180private:
181 vtkRibbonFilter(const vtkRibbonFilter&) = delete;
182 void operator=(const vtkRibbonFilter&) = delete;
183};
184
185#endif
object to represent cell connectivity
Definition: vtkCellArray.h:187
represent and manipulate cell attribute data
Definition: vtkCellData.h:42
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:56
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:42
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate point attribute data
Definition: vtkPointData.h:42
represent and manipulate 3D points
Definition: vtkPoints.h:40
Superclass for algorithms that produce only polydata as output.
create oriented ribbons from lines defined in polygonal dataset
void SetGenerateTCoordsToUseLength()
Control whether and how texture coordinates are produced.
void SetGenerateTCoordsToUseScalars()
Control whether and how texture coordinates are produced.
void SetGenerateTCoordsToNormalizedLength()
Control whether and how texture coordinates are produced.
vtkIdType ComputeOffset(vtkIdType offset, vtkIdType npts)
vtkTypeBool UseDefaultNormal
void SetGenerateTCoordsToOff()
Control whether and how texture coordinates are produced.
static vtkRibbonFilter * New()
Construct ribbon so that width is 0.1, the width does not vary with scalar values,...
int GeneratePoints(vtkIdType offset, vtkIdType npts, const vtkIdType *pts, vtkPoints *inPts, vtkPoints *newPts, vtkPointData *pd, vtkPointData *outPD, vtkFloatArray *newNormals, vtkDataArray *inScalars, double range[2], vtkDataArray *inNormals)
vtkTypeBool VaryWidth
~vtkRibbonFilter() override
void GenerateTextureCoords(vtkIdType offset, vtkIdType npts, const vtkIdType *pts, vtkPoints *inPts, vtkDataArray *inScalars, vtkFloatArray *newTCoords)
const char * GetGenerateTCoordsAsString()
Control whether and how texture coordinates are produced.
void GenerateStrip(vtkIdType offset, vtkIdType npts, const vtkIdType *pts, vtkIdType inCellId, vtkCellData *cd, vtkCellData *outCD, vtkCellArray *newStrips)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_TCOORDS_FROM_SCALARS
Definition: vtkTubeFilter.h:76
#define VTK_TCOORDS_FROM_LENGTH
Definition: vtkTubeFilter.h:75
#define VTK_TCOORDS_FROM_NORMALIZED_LENGTH
Definition: vtkTubeFilter.h:74
#define VTK_TCOORDS_OFF
Definition: vtkTubeFilter.h:73
int vtkIdType
Definition: vtkType.h:332
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165
#define VTK_INT_MAX
Definition: vtkType.h:155