00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00041
#ifndef __vtkRibbonFilter_h
00042
#define __vtkRibbonFilter_h
00043
00044
#include "vtkPolyDataToPolyDataFilter.h"
00045
00046 #define VTK_TCOORDS_OFF 0
00047 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
00048 #define VTK_TCOORDS_FROM_LENGTH 2
00049 #define VTK_TCOORDS_FROM_SCALARS 3
00050
00051
class vtkCellArray;
00052
class vtkCellData;
00053
class vtkDataArray;
00054
class vtkFloatArray;
00055
class vtkPointData;
00056
class vtkPoints;
00057
00058 class VTK_GRAPHICS_EXPORT vtkRibbonFilter :
public vtkPolyDataToPolyDataFilter
00059 {
00060
public:
00061 vtkTypeRevisionMacro(vtkRibbonFilter,
vtkPolyDataToPolyDataFilter);
00062
void PrintSelf(ostream& os,
vtkIndent indent);
00063
00066
static vtkRibbonFilter *
New();
00067
00069
00071 vtkSetClampMacro(Width,
double,0,VTK_DOUBLE_MAX);
00072 vtkGetMacro(Width,
double);
00074
00076
00078 vtkSetClampMacro(Angle,
double,0,360);
00079 vtkGetMacro(Angle,
double);
00081
00083
00084 vtkSetMacro(VaryWidth,
int);
00085 vtkGetMacro(VaryWidth,
int);
00086 vtkBooleanMacro(VaryWidth,
int);
00088
00090
00092 vtkSetMacro(WidthFactor,
double);
00093 vtkGetMacro(WidthFactor,
double);
00095
00097
00099 vtkSetVector3Macro(DefaultNormal,
double);
00100 vtkGetVectorMacro(DefaultNormal,
double,3);
00102
00104
00106 vtkSetMacro(UseDefaultNormal,
int);
00107 vtkGetMacro(UseDefaultNormal,
int);
00108 vtkBooleanMacro(UseDefaultNormal,
int);
00110
00112
00114 vtkSetClampMacro(GenerateTCoords,
int,VTK_TCOORDS_OFF,
00115 VTK_TCOORDS_FROM_SCALARS);
00116 vtkGetMacro(GenerateTCoords,
int);
00117 void SetGenerateTCoordsToOff()
00118 {this->SetGenerateTCoords(
VTK_TCOORDS_OFF);}
00119 void SetGenerateTCoordsToNormalizedLength()
00120 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_NORMALIZED_LENGTH);}
00121 void SetGenerateTCoordsToUseLength()
00122 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_LENGTH);}
00123 void SetGenerateTCoordsToUseScalars()
00124 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_SCALARS);}
00125
const char *GetGenerateTCoordsAsString();
00127
00129
00133 vtkSetClampMacro(TextureLength,
double,0.000001,VTK_LARGE_INTEGER);
00134 vtkGetMacro(TextureLength,
double);
00136
00138
00141 vtkGetStringMacro(InputVectorsSelection);
00142 void SelectInputVectors(
const char *fieldName)
00143 {this->SetInputVectorsSelection(fieldName);}
00145
00146
protected:
00147 vtkRibbonFilter();
00148 ~vtkRibbonFilter();
00149
00150
void Execute();
00151 double Width;
00152 double Angle;
00153 int VaryWidth;
00154 double WidthFactor;
00155 double DefaultNormal[3];
00156 int UseDefaultNormal;
00157 int GenerateTCoords;
00158 double TextureLength;
00159
00160
00161
int GeneratePoints(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00162
vtkPoints *inPts,
vtkPoints *newPts,
00163
vtkPointData *pd,
vtkPointData *outPD,
00164
vtkFloatArray *newNormals,
vtkDataArray *inScalars,
00165
double range[2],
vtkDataArray *inNormals);
00166
void GenerateStrip(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00167
vtkIdType inCellId,
vtkCellData *cd,
vtkCellData *outCD,
00168
vtkCellArray *newStrips);
00169
void GenerateTextureCoords(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00170
vtkPoints *inPts,
vtkDataArray *inScalars,
00171
vtkFloatArray *newTCoords);
00172
vtkIdType ComputeOffset(
vtkIdType offset,
vtkIdType npts);
00173
00174
00175 double Theta;
00176
00177
00178
00179 char *InputVectorsSelection;
00180 vtkSetStringMacro(InputVectorsSelection);
00181
00182
private:
00183 vtkRibbonFilter(
const vtkRibbonFilter&);
00184
void operator=(
const vtkRibbonFilter&);
00185 };
00186
00187
#endif
00188
00189