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 "vtkPolyDataAlgorithm.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 vtkPolyDataAlgorithm
00067 {
00068 public:
00069 vtkTypeMacro(vtkHyperStreamline,vtkPolyDataAlgorithm);
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 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00225 int BuildTube(vtkDataSet *input, vtkPolyData *output);
00226
00227 virtual int FillInputPortInformation(int port, vtkInformation *info);
00228
00229
00230 int StartFrom;
00231
00232
00233 vtkIdType StartCell;
00234 int StartSubId;
00235 double StartPCoords[3];
00236
00237
00238 double StartPosition[3];
00239
00240
00241 vtkHyperArray *Streamers;
00242 int NumberOfStreamers;
00243
00244
00245 double MaximumPropagationDistance;
00246
00247
00248 int IntegrationDirection;
00249
00250
00251 double IntegrationStepLength;
00252
00253
00254 double StepLength;
00255
00256
00257 double TerminalEigenvalue;
00258
00259
00260 int NumberOfSides;
00261
00262
00263 double Radius;
00264
00265
00266 int LogScaling;
00267
00268
00269 int IntegrationEigenvector;
00270 private:
00271 vtkHyperStreamline(const vtkHyperStreamline&);
00272 void operator=(const vtkHyperStreamline&);
00273 };
00274
00275 #endif