00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00045
#ifndef __vtkRibbonFilter_h
00046
#define __vtkRibbonFilter_h
00047
00048
#include "vtkPolyDataToPolyDataFilter.h"
00049
00050 #define VTK_TCOORDS_OFF 0
00051 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
00052 #define VTK_TCOORDS_FROM_LENGTH 2
00053 #define VTK_TCOORDS_FROM_SCALARS 3
00054
00055
class vtkCellArray;
00056
class vtkCellData;
00057
class vtkDataArray;
00058
class vtkFloatArray;
00059
class vtkPointData;
00060
class vtkPoints;
00061
00062 class VTK_GRAPHICS_EXPORT vtkRibbonFilter :
public vtkPolyDataToPolyDataFilter
00063 {
00064
public:
00065 vtkTypeRevisionMacro(vtkRibbonFilter,
vtkPolyDataToPolyDataFilter);
00066
void PrintSelf(ostream& os,
vtkIndent indent);
00067
00070
static vtkRibbonFilter *
New();
00071
00073
00075 vtkSetClampMacro(Width,
float,0,VTK_LARGE_FLOAT);
00076 vtkGetMacro(Width,
float);
00078
00080
00082 vtkSetClampMacro(Angle,
float,0,360);
00083 vtkGetMacro(Angle,
float);
00085
00087
00088 vtkSetMacro(VaryWidth,
int);
00089 vtkGetMacro(VaryWidth,
int);
00090 vtkBooleanMacro(VaryWidth,
int);
00092
00094
00096 vtkSetMacro(WidthFactor,
float);
00097 vtkGetMacro(WidthFactor,
float);
00099
00101
00103 vtkSetVector3Macro(DefaultNormal,
float);
00104 vtkGetVectorMacro(DefaultNormal,
float,3);
00106
00108
00110 vtkSetMacro(UseDefaultNormal,
int);
00111 vtkGetMacro(UseDefaultNormal,
int);
00112 vtkBooleanMacro(UseDefaultNormal,
int);
00114
00116
00118 vtkSetClampMacro(GenerateTCoords,
int,VTK_TCOORDS_OFF,
00119 VTK_TCOORDS_FROM_SCALARS);
00120 vtkGetMacro(GenerateTCoords,
int);
00121 void SetGenerateTCoordsToOff()
00122 {this->SetGenerateTCoords(
VTK_TCOORDS_OFF);}
00123 void SetGenerateTCoordsToNormalizedLength()
00124 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_NORMALIZED_LENGTH);}
00125 void SetGenerateTCoordsToUseLength()
00126 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_LENGTH);}
00127 void SetGenerateTCoordsToUseScalars()
00128 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_SCALARS);}
00129
const char *GetGenerateTCoordsAsString();
00131
00133
00137 vtkSetClampMacro(TextureLength,
float,0.000001,VTK_LARGE_INTEGER);
00138 vtkGetMacro(TextureLength,
float);
00140
00141
protected:
00142 vtkRibbonFilter();
00143 ~vtkRibbonFilter();
00144
00145
void Execute();
00146 float Width;
00147 float Angle;
00148 int VaryWidth;
00149 float WidthFactor;
00150 float DefaultNormal[3];
00151 int UseDefaultNormal;
00152 int GenerateTCoords;
00153 float TextureLength;
00154
00155
00156
int GeneratePoints(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00157
vtkPoints *inPts,
vtkPoints *newPts,
00158
vtkPointData *pd,
vtkPointData *outPD,
00159
vtkFloatArray *newNormals,
vtkDataArray *inScalars,
00160
float range[2],
vtkDataArray *inNormals);
00161
void GenerateStrip(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00162
vtkIdType inCellId,
vtkCellData *cd,
vtkCellData *outCD,
00163
vtkCellArray *newStrips);
00164
void GenerateTextureCoords(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00165
vtkPoints *inPts,
vtkDataArray *inScalars,
00166
vtkFloatArray *newTCoords);
00167
vtkIdType ComputeOffset(
vtkIdType offset,
vtkIdType npts);
00168
00169
00170 float Theta;
00171
00172
00173
00174 char *InputVectorsSelection;
00175 vtkSetStringMacro(InputVectorsSelection);
00176
00177
private:
00178 vtkRibbonFilter(
const vtkRibbonFilter&);
00179
void operator=(
const vtkRibbonFilter&);
00180 };
00181
00182
#endif
00183
00184