Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Graphics/vtkHyperStreamline.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkHyperStreamline.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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 // Integrate data 00224 void Execute(); 00225 void BuildTube(); 00226 00227 // Flag indicates where streamlines start from (either position or location) 00228 int StartFrom; 00229 00230 // Starting from cell location 00231 vtkIdType StartCell; 00232 int StartSubId; 00233 double StartPCoords[3]; 00234 00235 // starting from global x-y-z position 00236 double StartPosition[3]; 00237 00238 //array of hyperstreamlines 00239 vtkHyperArray *Streamers; 00240 int NumberOfStreamers; 00241 00242 // length of hyperstreamline in absolute distance 00243 double MaximumPropagationDistance; 00244 00245 // integration direction 00246 int IntegrationDirection; 00247 00248 // the length (fraction of cell size) of integration steps 00249 double IntegrationStepLength; 00250 00251 // the length of the tube segments composing the hyperstreamline 00252 double StepLength; 00253 00254 // terminal propagation speed 00255 double TerminalEigenvalue; 00256 00257 // number of sides of tube 00258 int NumberOfSides; 00259 00260 // maximum radius of tube 00261 double Radius; 00262 00263 // boolean controls whether scaling is clamped 00264 int LogScaling; 00265 00266 // which eigenvector to use as integration vector field 00267 int IntegrationEigenvector; 00268 private: 00269 vtkHyperStreamline(const vtkHyperStreamline&); // Not implemented. 00270 void operator=(const vtkHyperStreamline&); // Not implemented. 00271 }; 00272 00273 #endif 00274 00275