00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00050 #ifndef __vtkHyperStreamline_h
00051 #define __vtkHyperStreamline_h
00052
00053 #include "vtkDataSetToPolyDataFilter.h"
00054
00055 #define VTK_INTEGRATE_FORWARD 0
00056 #define VTK_INTEGRATE_BACKWARD 1
00057 #define VTK_INTEGRATE_BOTH_DIRECTIONS 2
00058
00059 #define VTK_INTEGRATE_MAJOR_EIGENVECTOR 0
00060 #define VTK_INTEGRATE_MEDIUM_EIGENVECTOR 1
00061 #define VTK_INTEGRATE_MINOR_EIGENVECTOR 2
00062
00063
00064 class vtkHyperArray;
00065
00066 class VTK_GRAPHICS_EXPORT vtkHyperStreamline : public vtkDataSetToPolyDataFilter
00067 {
00068 public:
00069 vtkTypeRevisionMacro(vtkHyperStreamline,vtkDataSetToPolyDataFilter);
00070 void PrintSelf(ostream& os, vtkIndent indent);
00071
00076 static vtkHyperStreamline *New();
00077
00081 void SetStartLocation(vtkIdType cellId, int subId, double pcoords[3]);
00082
00084
00087 void SetStartLocation(vtkIdType cellId, int subId, double r, double s,
00088 double t);
00090
00093 vtkIdType GetStartLocation(int& subId, double pcoords[3]);
00094
00098 void SetStartPosition(double x[3]);
00099
00103 void SetStartPosition(double x, double y, double z);
00104
00107 double *GetStartPosition();
00108
00110
00112 vtkSetClampMacro(MaximumPropagationDistance,double,0.0,VTK_DOUBLE_MAX);
00113 vtkGetMacro(MaximumPropagationDistance,double);
00115
00117
00124 vtkSetClampMacro(IntegrationEigenvector,int,
00125 VTK_INTEGRATE_MAJOR_EIGENVECTOR,
00126 VTK_INTEGRATE_MINOR_EIGENVECTOR);
00127 vtkGetMacro(IntegrationEigenvector,int);
00128 void SetIntegrationEigenvectorToMajor()
00129 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MAJOR_EIGENVECTOR);};
00130 void SetIntegrationEigenvectorToMedium()
00131 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MEDIUM_EIGENVECTOR);};
00132 void SetIntegrationEigenvectorToMinor()
00133 {this->SetIntegrationEigenvector(VTK_INTEGRATE_MINOR_EIGENVECTOR);};
00135
00137
00140 void IntegrateMajorEigenvector()
00141 {this->SetIntegrationEigenvectorToMajor();};
00143
00145
00148 void IntegrateMediumEigenvector()
00149 {this->SetIntegrationEigenvectorToMedium();};
00151
00153
00156 void IntegrateMinorEigenvector()
00157 {this->SetIntegrationEigenvectorToMinor();};
00159
00161
00163 vtkSetClampMacro(IntegrationStepLength,double,0.001,0.5);
00164 vtkGetMacro(IntegrationStepLength,double);
00166
00168
00171 vtkSetClampMacro(StepLength,double,0.000001,1.0);
00172 vtkGetMacro(StepLength,double);
00174
00176
00177 vtkSetClampMacro(IntegrationDirection,int,
00178 VTK_INTEGRATE_FORWARD,VTK_INTEGRATE_BOTH_DIRECTIONS);
00179 vtkGetMacro(IntegrationDirection,int);
00180 void SetIntegrationDirectionToForward()
00181 {this->SetIntegrationDirection(VTK_INTEGRATE_FORWARD);};
00182 void SetIntegrationDirectionToBackward()
00183 {this->SetIntegrationDirection(VTK_INTEGRATE_BACKWARD);};
00184 void SetIntegrationDirectionToIntegrateBothDirections()
00185 {this->SetIntegrationDirection(VTK_INTEGRATE_BOTH_DIRECTIONS);};
00187
00189
00191 vtkSetClampMacro(TerminalEigenvalue,double,0.0,VTK_DOUBLE_MAX);
00192 vtkGetMacro(TerminalEigenvalue,double);
00194
00196
00198 vtkSetClampMacro(NumberOfSides,int,3,VTK_LARGE_INTEGER);
00199 vtkGetMacro(NumberOfSides,int);
00201
00203
00207 vtkSetClampMacro(Radius,double,0.0001,VTK_DOUBLE_MAX);
00208 vtkGetMacro(Radius,double);
00210
00212
00214 vtkSetMacro(LogScaling,int);
00215 vtkGetMacro(LogScaling,int);
00216 vtkBooleanMacro(LogScaling,int);
00218
00219 protected:
00220 vtkHyperStreamline();
00221 ~vtkHyperStreamline();
00222
00223
00224 void Execute();
00225 void BuildTube();
00226
00227
00228 int StartFrom;
00229
00230
00231 vtkIdType StartCell;
00232 int StartSubId;
00233 double StartPCoords[3];
00234
00235
00236 double StartPosition[3];
00237
00238
00239 vtkHyperArray *Streamers;
00240 int NumberOfStreamers;
00241
00242
00243 double MaximumPropagationDistance;
00244
00245
00246 int IntegrationDirection;
00247
00248
00249 double IntegrationStepLength;
00250
00251
00252 double StepLength;
00253
00254
00255 double TerminalEigenvalue;
00256
00257
00258 int NumberOfSides;
00259
00260
00261 double Radius;
00262
00263
00264 int LogScaling;
00265
00266
00267 int IntegrationEigenvector;
00268 private:
00269 vtkHyperStreamline(const vtkHyperStreamline&);
00270 void operator=(const vtkHyperStreamline&);
00271 };
00272
00273 #endif
00274
00275