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