VTK
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 "vtkPolyDataAlgorithm.h"
63 
64 #define VTK_VARY_RADIUS_OFF 0
65 #define VTK_VARY_RADIUS_BY_SCALAR 1
66 #define VTK_VARY_RADIUS_BY_VECTOR 2
67 #define VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR 3
68 
69 #define VTK_TCOORDS_OFF 0
70 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
71 #define VTK_TCOORDS_FROM_LENGTH 2
72 #define VTK_TCOORDS_FROM_SCALARS 3
73 
74 class vtkCellArray;
75 class vtkCellData;
76 class vtkDataArray;
77 class vtkFloatArray;
78 class vtkPointData;
79 class vtkPoints;
80 
82 {
83 public:
85  void PrintSelf(ostream& os, vtkIndent indent);
86 
89  static vtkTubeFilter *New();
90 
92 
94  vtkSetClampMacro(Radius,double,0.0,VTK_DOUBLE_MAX);
95  vtkGetMacro(Radius,double);
97 
99 
100  vtkSetClampMacro(VaryRadius,int,
102  vtkGetMacro(VaryRadius,int);
104  {this->SetVaryRadius(VTK_VARY_RADIUS_OFF);};
106  {this->SetVaryRadius(VTK_VARY_RADIUS_BY_SCALAR);};
108  {this->SetVaryRadius(VTK_VARY_RADIUS_BY_VECTOR);};
110  {this->SetVaryRadius(VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR);};
111  const char *GetVaryRadiusAsString();
113 
115 
117  vtkSetClampMacro(NumberOfSides,int,3,VTK_LARGE_INTEGER);
118  vtkGetMacro(NumberOfSides,int);
120 
122 
124  vtkSetMacro(RadiusFactor,double);
125  vtkGetMacro(RadiusFactor,double);
127 
129 
131  vtkSetVector3Macro(DefaultNormal,double);
132  vtkGetVectorMacro(DefaultNormal,double,3);
134 
136 
138  vtkSetMacro(UseDefaultNormal,int);
139  vtkGetMacro(UseDefaultNormal,int);
140  vtkBooleanMacro(UseDefaultNormal,int);
142 
144 
147  vtkSetMacro(SidesShareVertices, int);
148  vtkGetMacro(SidesShareVertices, int);
149  vtkBooleanMacro(SidesShareVertices, int);
151 
153 
154  vtkSetMacro(Capping,int);
155  vtkGetMacro(Capping,int);
156  vtkBooleanMacro(Capping,int);
158 
160 
162  vtkSetClampMacro(OnRatio,int,1,VTK_LARGE_INTEGER);
163  vtkGetMacro(OnRatio,int);
165 
167 
170  vtkSetClampMacro(Offset,int,0,VTK_LARGE_INTEGER);
171  vtkGetMacro(Offset,int);
173 
175 
179  vtkSetClampMacro(GenerateTCoords,int,VTK_TCOORDS_OFF,
181  vtkGetMacro(GenerateTCoords,int);
183  {this->SetGenerateTCoords(VTK_TCOORDS_OFF);}
185  {this->SetGenerateTCoords(VTK_TCOORDS_FROM_NORMALIZED_LENGTH);}
187  {this->SetGenerateTCoords(VTK_TCOORDS_FROM_LENGTH);}
189  {this->SetGenerateTCoords(VTK_TCOORDS_FROM_SCALARS);}
190  const char *GetGenerateTCoordsAsString();
192 
194 
198  vtkSetClampMacro(TextureLength,double,0.000001,VTK_LARGE_INTEGER);
199  vtkGetMacro(TextureLength,double);
201 
202 protected:
203  vtkTubeFilter();
205 
206  // Usual data generation method
208 
209  double Radius; //minimum radius of tube
210  int VaryRadius; //controls radius variation
211  int NumberOfSides; //number of sides to create tube
212  double RadiusFactor; //maxium allowablew radius
213  double DefaultNormal[3];
216  int Capping; //control whether tubes are capped
217  int OnRatio; //control the generation of the sides of the tube
218  int Offset; //control the generation of the sides
219  int GenerateTCoords; //control texture coordinate generation
220  double TextureLength; //this length is mapped to [0,1) texture space
221 
222  // Helper methods
223  int GeneratePoints(vtkIdType offset, vtkIdType npts, vtkIdType *pts,
224  vtkPoints *inPts, vtkPoints *newPts,
225  vtkPointData *pd, vtkPointData *outPD,
226  vtkFloatArray *newNormals, vtkDataArray *inScalars,
227  double range[2], vtkDataArray *inVectors, double maxNorm,
228  vtkDataArray *inNormals);
229  void GenerateStrips(vtkIdType offset, vtkIdType npts, vtkIdType *pts,
230  vtkIdType inCellId, vtkCellData *cd, vtkCellData *outCD,
231  vtkCellArray *newStrips);
232  void GenerateTextureCoords(vtkIdType offset, vtkIdType npts, vtkIdType *pts,
233  vtkPoints *inPts, vtkDataArray *inScalars,
234  vtkFloatArray *newTCoords);
235  vtkIdType ComputeOffset(vtkIdType offset,vtkIdType npts);
236 
237  // Helper data members
238  double Theta;
239 
240 private:
241  vtkTubeFilter(const vtkTubeFilter&); // Not implemented.
242  void operator=(const vtkTubeFilter&); // Not implemented.
243 };
244 
245 #endif
#define VTK_TCOORDS_FROM_NORMALIZED_LENGTH
Definition: vtkTubeFilter.h:70
#define VTK_VARY_RADIUS_BY_SCALAR
Definition: vtkTubeFilter.h:65
#define VTK_GRAPHICS_EXPORT
represent and manipulate point attribute data
Definition: vtkPointData.h:35
#define VTK_DOUBLE_MAX
Definition: vtkType.h:133
Store vtkAlgorithm input/output information.
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
double TextureLength
represent and manipulate cell attribute data
Definition: vtkCellData.h:36
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:42
void SetGenerateTCoordsToNormalizedLength()
#define VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR
Definition: vtkTubeFilter.h:67
int vtkIdType
Definition: vtkType.h:255
#define VTK_TCOORDS_FROM_LENGTH
Definition: vtkTubeFilter.h:71
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:81
a simple class to control print indentation
Definition: vtkIndent.h:37
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:53
#define VTK_TCOORDS_FROM_SCALARS
Definition: vtkTubeFilter.h:72
void SetVaryRadiusToVaryRadiusByScalar()
double RadiusFactor
void SetVaryRadiusToVaryRadiusByVector()
object to represent cell connectivity
Definition: vtkCellArray.h:48
#define VTK_TCOORDS_OFF
Definition: vtkTubeFilter.h:69
void SetGenerateTCoordsToUseLength()
#define VTK_VARY_RADIUS_BY_VECTOR
Definition: vtkTubeFilter.h:66
Store zero or more vtkInformation instances.
#define VTK_LARGE_INTEGER
Definition: vtkType.h:148
void SetGenerateTCoordsToOff()
void SetGenerateTCoordsToUseScalars()
#define VTK_VARY_RADIUS_OFF
Definition: vtkTubeFilter.h:64
void SetVaryRadiusToVaryRadiusByAbsoluteScalar()
represent and manipulate 3D points
Definition: vtkPoints.h:38
void SetVaryRadiusToVaryRadiusOff()