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