00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00054 #ifndef __vtkHyperStreamline_h
00055 #define __vtkHyperStreamline_h
00056
00057 #include "vtkDataSetToPolyDataFilter.h"
00058
00059 #define VTK_INTEGRATE_FORWARD 0
00060 #define VTK_INTEGRATE_BACKWARD 1
00061 #define VTK_INTEGRATE_BOTH_DIRECTIONS 2
00062
00063 #define VTK_INTEGRATE_MAJOR_EIGENVECTOR 0
00064 #define VTK_INTEGRATE_MEDIUM_EIGENVECTOR 1
00065 #define VTK_INTEGRATE_MINOR_EIGENVECTOR 2
00066
00067
00068 class vtkHyperArray;
00069
00070 class VTK_GRAPHICS_EXPORT vtkHyperStreamline : public vtkDataSetToPolyDataFilter
00071 {
00072 public:
00073 vtkTypeRevisionMacro(vtkHyperStreamline,vtkDataSetToPolyDataFilter);
00074 void PrintSelf(ostream& os, vtkIndent indent);
00075
00080 static vtkHyperStreamline *New();
00081
00085 void SetStartLocation(vtkIdType cellId, int subId, float pcoords[3]);
00086
00088
00091 void SetStartLocation(vtkIdType cellId, int subId, float r, float s,
00092 float t);
00094
00097 vtkIdType GetStartLocation(int& subId, float pcoords[3]);
00098
00102 void SetStartPosition(float x[3]);
00103
00107 void SetStartPosition(float x, float y, float z);
00108
00111 float *GetStartPosition();
00112
00114
00116 vtkSetClampMacro(MaximumPropagationDistance,float,0.0,VTK_LARGE_FLOAT);
00117 vtkGetMacro(MaximumPropagationDistance,float);
00119
00121
00128 vtkSetClampMacro(IntegrationEigenvector,int,
00129 VTK_INTEGRATE_MAJOR_EIGENVECTOR,
00130 VTK_INTEGRATE_MINOR_EIGENVECTOR);
00131 vtkGetMacro(IntegrationEigenvector,int);
00132 void SetIntegrationEigenvectorToMajor()
00133 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MAJOR_EIGENVECTOR);};
00134 void SetIntegrationEigenvectorToMedium()
00135 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MEDIUM_EIGENVECTOR);};
00136 void SetIntegrationEigenvectorToMinor()
00137 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MINOR_EIGENVECTOR);};
00139
00141
00144 void IntegrateMajorEigenvector()
00145 {this->SetIntegrationEigenvectorToMajor();};
00147
00149
00152 void IntegrateMediumEigenvector()
00153 {this->SetIntegrationEigenvectorToMedium();};
00155
00157
00160 void IntegrateMinorEigenvector()
00161 {this->SetIntegrationEigenvectorToMinor();};
00163
00165
00167 vtkSetClampMacro(IntegrationStepLength,float,0.001,0.5);
00168 vtkGetMacro(IntegrationStepLength,float);
00170
00172
00175 vtkSetClampMacro(StepLength,float,0.000001,1.0);
00176 vtkGetMacro(StepLength,float);
00178
00180
00181 vtkSetClampMacro(IntegrationDirection,int,
00182 VTK_INTEGRATE_FORWARD,VTK_INTEGRATE_BOTH_DIRECTIONS);
00183 vtkGetMacro(IntegrationDirection,int);
00184 void SetIntegrationDirectionToForward()
00185 {this->SetIntegrationDirection(VTK_INTEGRATE_FORWARD);};
00186 void SetIntegrationDirectionToBackward()
00187 {this->SetIntegrationDirection(VTK_INTEGRATE_BACKWARD);};
00188 void SetIntegrationDirectionToIntegrateBothDirections()
00189 {this->SetIntegrationDirection(VTK_INTEGRATE_BOTH_DIRECTIONS);};
00191
00193
00195 vtkSetClampMacro(TerminalEigenvalue,float,0.0,VTK_LARGE_FLOAT);
00196 vtkGetMacro(TerminalEigenvalue,float);
00198
00200
00202 vtkSetClampMacro(NumberOfSides,int,3,VTK_LARGE_INTEGER);
00203 vtkGetMacro(NumberOfSides,int);
00205
00207
00211 vtkSetClampMacro(Radius,float,0.0001,VTK_LARGE_FLOAT);
00212 vtkGetMacro(Radius,float);
00214
00216
00218 vtkSetMacro(LogScaling,int);
00219 vtkGetMacro(LogScaling,int);
00220 vtkBooleanMacro(LogScaling,int);
00222
00223 protected:
00224 vtkHyperStreamline();
00225 ~vtkHyperStreamline();
00226
00227
00228 void Execute();
00229 void BuildTube();
00230
00231
00232 int StartFrom;
00233
00234
00235 vtkIdType StartCell;
00236 int StartSubId;
00237 float StartPCoords[3];
00238
00239
00240 float StartPosition[3];
00241
00242
00243 vtkHyperArray *Streamers;
00244 int NumberOfStreamers;
00245
00246
00247 float MaximumPropagationDistance;
00248
00249
00250 int IntegrationDirection;
00251
00252
00253 float IntegrationStepLength;
00254
00255
00256 float StepLength;
00257
00258
00259 float TerminalEigenvalue;
00260
00261
00262 int NumberOfSides;
00263
00264
00265 float Radius;
00266
00267
00268 int LogScaling;
00269
00270
00271 int IntegrationEigenvector;
00272 private:
00273 vtkHyperStreamline(const vtkHyperStreamline&);
00274 void operator=(const vtkHyperStreamline&);
00275 };
00276
00277 #endif
00278
00279