00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00066 #ifndef __vtkHyperStreamline_h
00067 #define __vtkHyperStreamline_h
00068
00069 #include "vtkDataSetToPolyDataFilter.h"
00070
00071 #define VTK_INTEGRATE_FORWARD 0
00072 #define VTK_INTEGRATE_BACKWARD 1
00073 #define VTK_INTEGRATE_BOTH_DIRECTIONS 2
00074
00075 #define VTK_INTEGRATE_MAJOR_EIGENVECTOR 0
00076 #define VTK_INTEGRATE_MEDIUM_EIGENVECTOR 1
00077 #define VTK_INTEGRATE_MINOR_EIGENVECTOR 2
00078
00079
00080 class vtkHyperArray;
00081
00082 class VTK_GRAPHICS_EXPORT vtkHyperStreamline : public vtkDataSetToPolyDataFilter
00083 {
00084 public:
00085 vtkTypeRevisionMacro(vtkHyperStreamline,vtkDataSetToPolyDataFilter);
00086 void PrintSelf(ostream& os, vtkIndent indent);
00087
00092 static vtkHyperStreamline *New();
00093
00097 void SetStartLocation(vtkIdType cellId, int subId, float pcoords[3]);
00098
00100
00103 void SetStartLocation(vtkIdType cellId, int subId, float r, float s,
00104 float t);
00106
00109 vtkIdType GetStartLocation(int& subId, float pcoords[3]);
00110
00114 void SetStartPosition(float x[3]);
00115
00119 void SetStartPosition(float x, float y, float z);
00120
00123 float *GetStartPosition();
00124
00126
00128 vtkSetClampMacro(MaximumPropagationDistance,float,0.0,VTK_LARGE_FLOAT);
00129 vtkGetMacro(MaximumPropagationDistance,float);
00131
00133
00140 vtkSetClampMacro(IntegrationEigenvector,int,
00141 VTK_INTEGRATE_MAJOR_EIGENVECTOR,
00142 VTK_INTEGRATE_MINOR_EIGENVECTOR);
00143 vtkGetMacro(IntegrationEigenvector,int);
00144 void SetIntegrationEigenvectorToMajor()
00145 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MAJOR_EIGENVECTOR);};
00146 void SetIntegrationEigenvectorToMedium()
00147 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MEDIUM_EIGENVECTOR);};
00148 void SetIntegrationEigenvectorToMinor()
00149 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MINOR_EIGENVECTOR);};
00151
00153
00156 void IntegrateMajorEigenvector()
00157 {this->SetIntegrationEigenvectorToMajor();};
00159
00161
00164 void IntegrateMediumEigenvector()
00165 {this->SetIntegrationEigenvectorToMedium();};
00167
00169
00172 void IntegrateMinorEigenvector()
00173 {this->SetIntegrationEigenvectorToMinor();};
00175
00177
00179 vtkSetClampMacro(IntegrationStepLength,float,0.001,0.5);
00180 vtkGetMacro(IntegrationStepLength,float);
00182
00184
00187 vtkSetClampMacro(StepLength,float,0.000001,1.0);
00188 vtkGetMacro(StepLength,float);
00190
00192
00193 vtkSetClampMacro(IntegrationDirection,int,
00194 VTK_INTEGRATE_FORWARD,VTK_INTEGRATE_BOTH_DIRECTIONS);
00195 vtkGetMacro(IntegrationDirection,int);
00196 void SetIntegrationDirectionToForward()
00197 {this->SetIntegrationDirection(VTK_INTEGRATE_FORWARD);};
00198 void SetIntegrationDirectionToBackward()
00199 {this->SetIntegrationDirection(VTK_INTEGRATE_BACKWARD);};
00200 void SetIntegrationDirectionToIntegrateBothDirections()
00201 {this->SetIntegrationDirection(VTK_INTEGRATE_BOTH_DIRECTIONS);};
00203
00205
00207 vtkSetClampMacro(TerminalEigenvalue,float,0.0,VTK_LARGE_FLOAT);
00208 vtkGetMacro(TerminalEigenvalue,float);
00210
00212
00214 vtkSetClampMacro(NumberOfSides,int,3,VTK_LARGE_INTEGER);
00215 vtkGetMacro(NumberOfSides,int);
00217
00219
00223 vtkSetClampMacro(Radius,float,0.0001,VTK_LARGE_FLOAT);
00224 vtkGetMacro(Radius,float);
00226
00228
00230 vtkSetMacro(LogScaling,int);
00231 vtkGetMacro(LogScaling,int);
00232 vtkBooleanMacro(LogScaling,int);
00234
00235 protected:
00236 vtkHyperStreamline();
00237 ~vtkHyperStreamline();
00238
00239
00240 void Execute();
00241 void BuildTube();
00242
00243
00244 int StartFrom;
00245
00246
00247 vtkIdType StartCell;
00248 int StartSubId;
00249 float StartPCoords[3];
00250
00251
00252 float StartPosition[3];
00253
00254
00255 vtkHyperArray *Streamers;
00256 int NumberOfStreamers;
00257
00258
00259 float MaximumPropagationDistance;
00260
00261
00262 int IntegrationDirection;
00263
00264
00265 float IntegrationStepLength;
00266
00267
00268 float StepLength;
00269
00270
00271 float TerminalEigenvalue;
00272
00273
00274 int NumberOfSides;
00275
00276
00277 float Radius;
00278
00279
00280 int LogScaling;
00281
00282
00283 int IntegrationEigenvector;
00284 private:
00285 vtkHyperStreamline(const vtkHyperStreamline&);
00286 void operator=(const vtkHyperStreamline&);
00287 };
00288
00289 #endif
00290
00291