00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00039
#ifndef __vtkSplineFilter_h
00040
#define __vtkSplineFilter_h
00041
00042
#include "vtkPolyDataToPolyDataFilter.h"
00043
00044 #define VTK_SUBDIVIDE_SPECIFIED 0
00045 #define VTK_SUBDIVIDE_LENGTH 1
00046
00047 #define VTK_TCOORDS_OFF 0
00048 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
00049 #define VTK_TCOORDS_FROM_LENGTH 2
00050 #define VTK_TCOORDS_FROM_SCALARS 3
00051
00052
class vtkCellArray;
00053
class vtkCellData;
00054
class vtkFloatArray;
00055
class vtkPointData;
00056
class vtkPoints;
00057
class vtkSpline;
00058
00059 class VTK_GRAPHICS_EXPORT vtkSplineFilter :
public vtkPolyDataToPolyDataFilter
00060 {
00061
public:
00062 vtkTypeRevisionMacro(vtkSplineFilter,
vtkPolyDataToPolyDataFilter);
00063
void PrintSelf(ostream& os,
vtkIndent indent);
00064
00067
static vtkSplineFilter *
New();
00068
00070
00072 vtkSetClampMacro(MaximumNumberOfSubdivisions,
int,1,VTK_LARGE_INTEGER);
00073 vtkGetMacro(MaximumNumberOfSubdivisions,
int);
00075
00077
00078 vtkSetClampMacro(Subdivide,
int,VTK_SUBDIVIDE_SPECIFIED,VTK_SUBDIVIDE_LENGTH);
00079 vtkGetMacro(Subdivide,
int);
00080 void SetSubdivideToSpecified()
00081 {this->SetSubdivide(
VTK_SUBDIVIDE_SPECIFIED);}
00082 void SetSubdivideToLength()
00083 {this->SetSubdivide(
VTK_SUBDIVIDE_LENGTH);}
00084
const char *GetSubdivideAsString();
00086
00088
00091 vtkSetClampMacro(NumberOfSubdivisions,
int,1,VTK_LARGE_INTEGER);
00092 vtkGetMacro(NumberOfSubdivisions,
int);
00094
00096
00099 vtkSetClampMacro(Length,
double,0.0000001,VTK_DOUBLE_MAX);
00100 vtkGetMacro(Length,
double);
00102
00104
00105
virtual void SetSpline(
vtkSpline*);
00106 vtkGetObjectMacro(Spline,
vtkSpline);
00108
00110
00115 vtkSetClampMacro(GenerateTCoords,
int,VTK_TCOORDS_OFF,
00116 VTK_TCOORDS_FROM_SCALARS);
00117 vtkGetMacro(GenerateTCoords,
int);
00118 void SetGenerateTCoordsToOff()
00119 {this->SetGenerateTCoords(
VTK_TCOORDS_OFF);}
00120 void SetGenerateTCoordsToNormalizedLength()
00121 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_NORMALIZED_LENGTH);}
00122 void SetGenerateTCoordsToUseLength()
00123 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_LENGTH);}
00124 void SetGenerateTCoordsToUseScalars()
00125 {this->SetGenerateTCoords(
VTK_TCOORDS_FROM_SCALARS);}
00126
const char *GetGenerateTCoordsAsString();
00128
00130
00134 vtkSetClampMacro(TextureLength,
double,0.000001,VTK_LARGE_INTEGER);
00135 vtkGetMacro(TextureLength,
double);
00137
00138
protected:
00139 vtkSplineFilter();
00140 ~vtkSplineFilter();
00141
00142
00143
void Execute();
00144
00145 int MaximumNumberOfSubdivisions;
00146 int Subdivide;
00147 int NumberOfSubdivisions;
00148 double Length;
00149 vtkSpline *Spline;
00150 vtkSpline *XSpline;
00151 vtkSpline *YSpline;
00152 vtkSpline *ZSpline;
00153 int GenerateTCoords;
00154 double TextureLength;
00155
00156
00157
int GeneratePoints(
vtkIdType offset,
vtkIdType npts,
vtkIdType *pts,
00158
vtkPoints *inPts,
vtkPoints *newPts,
vtkPointData *pd,
00159
vtkPointData *outPD,
int genTCoords,
00160
vtkFloatArray *newTCoords);
00161
00162
void GenerateLine(
vtkIdType offset,
vtkIdType numGenPts,
vtkIdType inCellId,
00163
vtkCellData *cd,
vtkCellData *outCD,
vtkCellArray *newLines);
00164
00165
00166 vtkFloatArray *TCoordMap;
00167
00168
private:
00169 vtkSplineFilter(
const vtkSplineFilter&);
00170
void operator=(
const vtkSplineFilter&);
00171 };
00172
00173
#endif