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

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 "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   vtkTypeRevisionMacro(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   // Integrate data
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   // Flag indicates where streamlines start from (either position or location)
00230   int StartFrom;
00231 
00232   // Starting from cell location
00233   vtkIdType StartCell;
00234   int StartSubId;
00235   double StartPCoords[3];
00236 
00237   // starting from global x-y-z position
00238   double StartPosition[3];
00239 
00240   //array of hyperstreamlines
00241   vtkHyperArray *Streamers;
00242   int NumberOfStreamers;
00243 
00244   // length of hyperstreamline in absolute distance
00245   double MaximumPropagationDistance;
00246 
00247   // integration direction
00248   int IntegrationDirection;
00249 
00250   // the length (fraction of cell size) of integration steps
00251   double IntegrationStepLength;
00252 
00253   // the length of the tube segments composing the hyperstreamline
00254   double StepLength;
00255 
00256   // terminal propagation speed
00257   double TerminalEigenvalue;
00258 
00259   // number of sides of tube
00260   int NumberOfSides;
00261 
00262   // maximum radius of tube
00263   double Radius;
00264 
00265   // boolean controls whether scaling is clamped
00266   int LogScaling;
00267 
00268   // which eigenvector to use as integration vector field
00269   int IntegrationEigenvector;
00270 private:
00271   vtkHyperStreamline(const vtkHyperStreamline&);  // Not implemented.
00272   void operator=(const vtkHyperStreamline&);  // Not implemented.
00273 };
00274 
00275 #endif

Generated on Mon Jan 21 23:07:25 2008 for VTK by  doxygen 1.4.3-20050530