VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vtkTubeFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkTubeFilter.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 =========================================================================*/
59 #ifndef __vtkTubeFilter_h
60 #define __vtkTubeFilter_h
61 
62 #include "vtkFiltersCoreModule.h" // For export macro
63 #include "vtkPolyDataAlgorithm.h"
64 
65 #define VTK_VARY_RADIUS_OFF 0
66 #define VTK_VARY_RADIUS_BY_SCALAR 1
67 #define VTK_VARY_RADIUS_BY_VECTOR 2
68 #define VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR 3
69 
70 #define VTK_TCOORDS_OFF 0
71 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
72 #define VTK_TCOORDS_FROM_LENGTH 2
73 #define VTK_TCOORDS_FROM_SCALARS 3
74 
75 class vtkCellArray;
76 class vtkCellData;
77 class vtkDataArray;
78 class vtkFloatArray;
79 class vtkPointData;
80 class vtkPoints;
81 
82 class VTKFILTERSCORE_EXPORT vtkTubeFilter : public vtkPolyDataAlgorithm
83 {
84 public:
86  void PrintSelf(ostream& os, vtkIndent indent);
87 
90  static vtkTubeFilter *New();
91 
93 
95  vtkSetClampMacro(Radius,double,0.0,VTK_DOUBLE_MAX);
96  vtkGetMacro(Radius,double);
98 
100 
101  vtkSetClampMacro(VaryRadius,int,
103  vtkGetMacro(VaryRadius,int);
105  {this->SetVaryRadius(VTK_VARY_RADIUS_OFF);};
107  {this->SetVaryRadius(VTK_VARY_RADIUS_BY_SCALAR);};
109  {this->SetVaryRadius(VTK_VARY_RADIUS_BY_VECTOR);};
111  {this->SetVaryRadius(VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR);};
112  const char *GetVaryRadiusAsString();
114 
116 
118  vtkSetClampMacro(NumberOfSides,int,3,VTK_INT_MAX);
119  vtkGetMacro(NumberOfSides,int);
121 
123 
125  vtkSetMacro(RadiusFactor,double);
126  vtkGetMacro(RadiusFactor,double);
128 
130 
132  vtkSetVector3Macro(DefaultNormal,double);
133  vtkGetVectorMacro(DefaultNormal,double,3);
135 
137 
139  vtkSetMacro(UseDefaultNormal,int);
140  vtkGetMacro(UseDefaultNormal,int);
141  vtkBooleanMacro(UseDefaultNormal,int);
143 
145 
148  vtkSetMacro(SidesShareVertices, int);
149  vtkGetMacro(SidesShareVertices, int);
150  vtkBooleanMacro(SidesShareVertices, int);
152 
154 
156  vtkSetMacro(Capping,int);
157  vtkGetMacro(Capping,int);
158  vtkBooleanMacro(Capping,int);
160 
162 
164  vtkSetClampMacro(OnRatio,int,1,VTK_INT_MAX);
165  vtkGetMacro(OnRatio,int);
167 
169 
172  vtkSetClampMacro(Offset,int,0,VTK_INT_MAX);
173  vtkGetMacro(Offset,int);
175 
177 
181  vtkSetClampMacro(GenerateTCoords,int,VTK_TCOORDS_OFF,
183  vtkGetMacro(GenerateTCoords,int);
185  {this->SetGenerateTCoords(VTK_TCOORDS_OFF);}
187  {this->SetGenerateTCoords(VTK_TCOORDS_FROM_NORMALIZED_LENGTH);}
189  {this->SetGenerateTCoords(VTK_TCOORDS_FROM_LENGTH);}
191  {this->SetGenerateTCoords(VTK_TCOORDS_FROM_SCALARS);}
192  const char *GetGenerateTCoordsAsString();
194 
196 
200  vtkSetClampMacro(TextureLength,double,0.000001,VTK_INT_MAX);
201  vtkGetMacro(TextureLength,double);
203 
204 protected:
205  vtkTubeFilter();
207 
208  // Usual data generation method
209  int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
210 
211  double Radius; //minimum radius of tube
212  int VaryRadius; //controls radius variation
213  int NumberOfSides; //number of sides to create tube
214  double RadiusFactor; //maxium allowablew radius
215  double DefaultNormal[3];
218  int Capping; //control whether tubes are capped
219  int OnRatio; //control the generation of the sides of the tube
220  int Offset; //control the generation of the sides
221  int GenerateTCoords; //control texture coordinate generation
222  double TextureLength; //this length is mapped to [0,1) texture space
223 
224  // Helper methods
225  int GeneratePoints(vtkIdType offset, vtkIdType npts, vtkIdType *pts,
226  vtkPoints *inPts, vtkPoints *newPts,
227  vtkPointData *pd, vtkPointData *outPD,
228  vtkFloatArray *newNormals, vtkDataArray *inScalars,
229  double range[2], vtkDataArray *inVectors, double maxNorm,
230  vtkDataArray *inNormals);
231  void GenerateStrips(vtkIdType offset, vtkIdType npts, vtkIdType *pts,
232  vtkIdType inCellId, vtkCellData *cd, vtkCellData *outCD,
233  vtkCellArray *newStrips);
234  void GenerateTextureCoords(vtkIdType offset, vtkIdType npts, vtkIdType *pts,
235  vtkPoints *inPts, vtkDataArray *inScalars,
236  vtkFloatArray *newTCoords);
237  vtkIdType ComputeOffset(vtkIdType offset,vtkIdType npts);
238 
239  // Helper data members
240  double Theta;
241 
242 private:
243  vtkTubeFilter(const vtkTubeFilter&); // Not implemented.
244  void operator=(const vtkTubeFilter&); // Not implemented.
245 };
246 
247 #endif
#define VTK_TCOORDS_FROM_NORMALIZED_LENGTH
Definition: vtkTubeFilter.h:71
#define VTK_VARY_RADIUS_BY_SCALAR
Definition: vtkTubeFilter.h:66
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
double TextureLength
represent and manipulate cell attribute data
Definition: vtkCellData.h:37
void SetGenerateTCoordsToNormalizedLength()
#define VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR
Definition: vtkTubeFilter.h:68
#define VTK_TCOORDS_FROM_LENGTH
Definition: vtkTubeFilter.h:72
static vtkPolyDataAlgorithm * New()
void PrintSelf(ostream &os, vtkIndent indent)
Superclass for algorithms that produce only polydata as output.
filter that generates tubes around lines
Definition: vtkTubeFilter.h:82
#define VTK_TCOORDS_FROM_SCALARS
Definition: vtkTubeFilter.h:73
void SetVaryRadiusToVaryRadiusByScalar()
double RadiusFactor
void SetVaryRadiusToVaryRadiusByVector()
object to represent cell connectivity
Definition: vtkCellArray.h:49
#define VTK_TCOORDS_OFF
Definition: vtkTubeFilter.h:70
void SetGenerateTCoordsToUseLength()
#define VTK_VARY_RADIUS_BY_VECTOR
Definition: vtkTubeFilter.h:67
void SetGenerateTCoordsToOff()
void SetGenerateTCoordsToUseScalars()
#define VTK_VARY_RADIUS_OFF
Definition: vtkTubeFilter.h:65
void SetVaryRadiusToVaryRadiusByAbsoluteScalar()
void SetVaryRadiusToVaryRadiusOff()