00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00059
#ifndef __vtkTubeFilter_h
00060
#define __vtkTubeFilter_h
00061
00062
#include "vtkPolyDataToPolyDataFilter.h"
00063
00064 #define VTK_VARY_RADIUS_OFF 0
00065 #define VTK_VARY_RADIUS_BY_SCALAR 1
00066 #define VTK_VARY_RADIUS_BY_VECTOR 2
00067 #define VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR 3
00068
00069 #define VTK_TCOORDS_OFF 0
00070 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
00071 #define VTK_TCOORDS_FROM_LENGTH 2
00072 #define VTK_TCOORDS_FROM_SCALARS 3
00073
00074
class vtkCellArray;
00075
class vtkCellData;
00076
class vtkDataArray;
00077
class vtkFloatArray;
00078
class vtkPointData;
00079
class vtkPoints;
00080
00081 class VTK_GRAPHICS_EXPORT vtkTubeFilter :
public vtkPolyDataToPolyDataFilter
00082 {
00083
public:
00084 vtkTypeRevisionMacro(vtkTubeFilter,
vtkPolyDataToPolyDataFilter);
00085
void PrintSelf(ostream& os,
vtkIndent indent);
00086
00089
static vtkTubeFilter *
New();
00090
00092
00094 vtkSetClampMacro(Radius,
double,0.0,VTK_DOUBLE_MAX);
00095 vtkGetMacro(Radius,
double);
00097
00099
00100 vtkSetClampMacro(VaryRadius,
int,
00101 VTK_VARY_RADIUS_OFF,VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR);
00102 vtkGetMacro(VaryRadius,
int);
00103 void SetVaryRadiusToVaryRadiusOff()
00104 {this->SetVaryRadius(
VTK_VARY_RADIUS_OFF);};
00105 void SetVaryRadiusToVaryRadiusByScalar()
00106 {this->SetVaryRadius(
VTK_VARY_RADIUS_BY_SCALAR);};
00107 void SetVaryRadiusToVaryRadiusByVector()
00108 {this->SetVaryRadius(
VTK_VARY_RADIUS_BY_VECTOR);};
00109 void SetVaryRadiusToVaryRadiusByAbsoluteScalar()
00110 {this->SetVaryRadius(
VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR);};
00111
const char *GetVaryRadiusAsString();
00113
00115
00117 vtkSetClampMacro(NumberOfSides,
int,3,VTK_LARGE_INTEGER);
00118 vtkGetMacro(NumberOfSides,
int);
00120
00122
00124 vtkSetMacro(RadiusFactor,
double);
00125 vtkGetMacro(RadiusFactor,
double);
00127
00129
00131 vtkSetVector3Macro(DefaultNormal,
double);
00132 vtkGetVectorMacro(DefaultNormal,
double,3);
00134
00136
00138 vtkSetMacro(UseDefaultNormal,
int);
00139 vtkGetMacro(UseDefaultNormal,
int);
00140 vtkBooleanMacro(UseDefaultNormal,
int);
00142
00144
00147 vtkSetMacro(SidesShareVertices,
int);
00148 vtkGetMacro(SidesShareVertices,
int);
00149 vtkBooleanMacro(SidesShareVertices,
int);
00151
00153
00154 vtkSetMacro(Capping,
int);
00155 vtkGetMacro(Capping,
int);
00156 vtkBooleanMacro(Capping,
int);
00158
00160
00162 vtkSetClampMacro(OnRatio,
int,1,VTK_LARGE_INTEGER);
00163 vtkGetMacro(OnRatio,
int);
00165
00167
00170 vtkSetClampMacro(Offset,
int,0,VTK_LARGE_INTEGER);
00171 vtkGetMacro(Offset,
int);
00173
00175
00179 vtkSetClampMacro(GenerateTCoords,
int,VTK_TCOORDS_OFF,
00180 VTK_TCOORDS_FROM_SCALARS);
00181 vtkGetMacro(GenerateTCoords,
int);
00182 void SetGenerateTCoordsToOff()
00183 {this->SetGenerateTCoords(
VTK_TCOORDS_OFF);}
00184 void SetGenerateTCoordsToNormalizedLength()
00185 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_NORMALIZED_LENGTH);}
00186 void SetGenerateTCoordsToUseLength()
00187 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_LENGTH);}
00188 void SetGenerateTCoordsToUseScalars()
00189 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_SCALARS);}
00190
const char *GetGenerateTCoordsAsString();
00192
00194
00198 vtkSetClampMacro(TextureLength,
double,0.000001,VTK_LARGE_INTEGER);
00199 vtkGetMacro(TextureLength,
double);
00201
00202
protected:
00203 vtkTubeFilter();
00204 ~vtkTubeFilter() {}
00205
00206
00207
void Execute();
00208
00209 double Radius;
00210 int VaryRadius;
00211 int NumberOfSides;
00212 double RadiusFactor;
00213 double DefaultNormal[3];
00214 int UseDefaultNormal;
00215 int SidesShareVertices;
00216 int Capping;
00217 int OnRatio;
00218 int Offset;
00219 int GenerateTCoords;
00220 double TextureLength;
00221
00222
00223
int GeneratePoints(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00224
vtkPoints *inPts,
vtkPoints *newPts,
00225
vtkPointData *pd,
vtkPointData *outPD,
00226
vtkFloatArray *newNormals,
vtkDataArray *inScalars,
00227
double range[2],
vtkDataArray *inVectors,
double maxNorm,
00228
vtkDataArray *inNormals);
00229
void GenerateStrips(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00230
vtkIdType inCellId,
vtkCellData *cd,
vtkCellData *outCD,
00231
vtkCellArray *newStrips);
00232
void GenerateTextureCoords(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00233
vtkPoints *inPts,
vtkDataArray *inScalars,
00234
vtkFloatArray *newTCoords);
00235
vtkIdType ComputeOffset(
vtkIdType offset,
vtkIdType npts);
00236
00237
00238 double Theta;
00239
00240
private:
00241 vtkTubeFilter(
const vtkTubeFilter&);
00242
void operator=(
const vtkTubeFilter&);
00243 };
00244
00245
#endif