VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkHyperStreamline Class Reference

generate hyperstreamline in arbitrary dataset More...

#include <vtkHyperStreamline.h>

Inherits vtkPolyDataAlgorithm.

Public Types

typedef vtkPolyDataAlgorithm Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkHyperStreamlineNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
void SetStartLocation (vtkIdType cellId, int subId, double pcoords[3])
 
vtkIdType GetStartLocation (int &subId, double pcoords[3])
 
void SetStartPosition (double x[3])
 
void SetStartPosition (double x, double y, double z)
 
double * GetStartPosition ()
 
void SetStartLocation (vtkIdType cellId, int subId, double r, double s, double t)
 
virtual void SetMaximumPropagationDistance (double)
 
virtual double GetMaximumPropagationDistance ()
 
virtual void SetIntegrationEigenvector (int)
 
virtual int GetIntegrationEigenvector ()
 
void SetIntegrationEigenvectorToMajor ()
 
void SetIntegrationEigenvectorToMedium ()
 
void SetIntegrationEigenvectorToMinor ()
 
void IntegrateMajorEigenvector ()
 
void IntegrateMediumEigenvector ()
 
void IntegrateMinorEigenvector ()
 
virtual void SetIntegrationStepLength (double)
 
virtual double GetIntegrationStepLength ()
 
virtual void SetStepLength (double)
 
virtual double GetStepLength ()
 
virtual void SetIntegrationDirection (int)
 
virtual int GetIntegrationDirection ()
 
void SetIntegrationDirectionToForward ()
 
void SetIntegrationDirectionToBackward ()
 
void SetIntegrationDirectionToIntegrateBothDirections ()
 
virtual void SetTerminalEigenvalue (double)
 
virtual double GetTerminalEigenvalue ()
 
virtual void SetNumberOfSides (int)
 
virtual int GetNumberOfSides ()
 
virtual void SetRadius (double)
 
virtual double GetRadius ()
 
virtual void SetLogScaling (int)
 
virtual int GetLogScaling ()
 
virtual void LogScalingOn ()
 
virtual void LogScalingOff ()
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkHyperStreamlineSafeDownCast (vtkObjectBase *o)
 
static vtkHyperStreamlineNew ()
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkHyperStreamline ()
 
 ~vtkHyperStreamline ()
 
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
int BuildTube (vtkDataSet *input, vtkPolyData *output)
 
virtual int FillInputPortInformation (int port, vtkInformation *info)
 

Protected Attributes

int StartFrom
 
vtkIdType StartCell
 
int StartSubId
 
double StartPCoords [3]
 
double StartPosition [3]
 
vtkHyperArray * Streamers
 
int NumberOfStreamers
 
double MaximumPropagationDistance
 
int IntegrationDirection
 
double IntegrationStepLength
 
double StepLength
 
double TerminalEigenvalue
 
int NumberOfSides
 
double Radius
 
int LogScaling
 
int IntegrationEigenvector
 

Detailed Description

generate hyperstreamline in arbitrary dataset

vtkHyperStreamline is a filter that integrates through a tensor field to generate a hyperstreamline. The integration is along the maximum eigenvector and the cross section of the hyperstreamline is defined by the two other eigenvectors. Thus the shape of the hyperstreamline is "tube-like", with the cross section being elliptical. Hyperstreamlines are used to visualize tensor fields.

The starting point of a hyperstreamline can be defined in one of two ways. First, you may specify an initial position. This is a x-y-z global coordinate. The second option is to specify a starting location. This is cellId, subId, and cell parametric coordinates.

The integration of the hyperstreamline occurs through the major eigenvector field. IntegrationStepLength controls the step length within each cell (i.e., this is the fraction of the cell length). The length of the hyperstreamline is controlled by MaximumPropagationDistance. This parameter is the length of the hyperstreamline in units of distance. The tube itself is composed of many small sub-tubes - NumberOfSides controls the number of sides in the tube, and StepLength controls the length of the sub-tubes.

Because hyperstreamlines are often created near regions of singularities, it is possible to control the scaling of the tube cross section by using a logarithmic scale. Use LogScalingOn to turn this capability on. The Radius value controls the initial radius of the tube.

See Also
vtkTensorGlyph vtkStreamer
Tests:
vtkHyperStreamline (Tests)

Definition at line 67 of file vtkHyperStreamline.h.

Member Typedef Documentation

typedef vtkPolyDataAlgorithm vtkHyperStreamline::Superclass

Definition at line 70 of file vtkHyperStreamline.h.

Constructor & Destructor Documentation

vtkHyperStreamline::vtkHyperStreamline ( )
protected
vtkHyperStreamline::~vtkHyperStreamline ( )
protected

Member Function Documentation

static int vtkHyperStreamline::IsTypeOf ( const char *  type)
static
virtual int vtkHyperStreamline::IsA ( const char *  type)
virtual
static vtkHyperStreamline* vtkHyperStreamline::SafeDownCast ( vtkObjectBase *  o)
static
virtual vtkObjectBase* vtkHyperStreamline::NewInstanceInternal ( ) const
protectedvirtual
vtkHyperStreamline* vtkHyperStreamline::NewInstance ( ) const
void vtkHyperStreamline::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
static vtkHyperStreamline* vtkHyperStreamline::New ( )
static

Construct object with initial starting position (0,0,0); integration step length 0.2; step length 0.01; forward integration; terminal eigenvalue 0.0; number of sides 6; radius 0.5; and logarithmic scaling off.

void vtkHyperStreamline::SetStartLocation ( vtkIdType  cellId,
int  subId,
double  pcoords[3] 
)

Specify the start of the hyperstreamline in the cell coordinate system. That is, cellId and subId (if composite cell), and parametric coordinates.

void vtkHyperStreamline::SetStartLocation ( vtkIdType  cellId,
int  subId,
double  r,
double  s,
double  t 
)

Specify the start of the hyperstreamline in the cell coordinate system. That is, cellId and subId (if composite cell), and parametric coordinates.

vtkIdType vtkHyperStreamline::GetStartLocation ( int &  subId,
double  pcoords[3] 
)

Get the starting location of the hyperstreamline in the cell coordinate system. Returns the cell that the starting point is in.

void vtkHyperStreamline::SetStartPosition ( double  x[3])

Specify the start of the hyperstreamline in the global coordinate system. Starting from position implies that a search must be performed to find initial cell to start integration from.

void vtkHyperStreamline::SetStartPosition ( double  x,
double  y,
double  z 
)

Specify the start of the hyperstreamline in the global coordinate system. Starting from position implies that a search must be performed to find initial cell to start integration from.

double* vtkHyperStreamline::GetStartPosition ( )

Get the start position of the hyperstreamline in global x-y-z coordinates.

virtual void vtkHyperStreamline::SetMaximumPropagationDistance ( double  )
virtual

Set / get the maximum length of the hyperstreamline expressed as absolute distance (i.e., arc length) value.

virtual double vtkHyperStreamline::GetMaximumPropagationDistance ( )
virtual

Set / get the maximum length of the hyperstreamline expressed as absolute distance (i.e., arc length) value.

virtual void vtkHyperStreamline::SetIntegrationEigenvector ( int  )
virtual

Set / get the eigenvector field through which to ingrate. It is possible to integrate using the major, medium or minor eigenvector field. The major eigenvector is the eigenvector whose corresponding eigenvalue is closest to positive infinity. The minor eigenvector is the eigenvector whose corresponding eigenvalue is closest to negative infinity. The medium eigenvector is the eigenvector whose corresponding eigenvalue is between the major and minor eigenvalues.

virtual int vtkHyperStreamline::GetIntegrationEigenvector ( )
virtual

Set / get the eigenvector field through which to ingrate. It is possible to integrate using the major, medium or minor eigenvector field. The major eigenvector is the eigenvector whose corresponding eigenvalue is closest to positive infinity. The minor eigenvector is the eigenvector whose corresponding eigenvalue is closest to negative infinity. The medium eigenvector is the eigenvector whose corresponding eigenvalue is between the major and minor eigenvalues.

void vtkHyperStreamline::SetIntegrationEigenvectorToMajor ( )
inline

Set / get the eigenvector field through which to ingrate. It is possible to integrate using the major, medium or minor eigenvector field. The major eigenvector is the eigenvector whose corresponding eigenvalue is closest to positive infinity. The minor eigenvector is the eigenvector whose corresponding eigenvalue is closest to negative infinity. The medium eigenvector is the eigenvector whose corresponding eigenvalue is between the major and minor eigenvalues.

Definition at line 129 of file vtkHyperStreamline.h.

void vtkHyperStreamline::SetIntegrationEigenvectorToMedium ( )
inline

Set / get the eigenvector field through which to ingrate. It is possible to integrate using the major, medium or minor eigenvector field. The major eigenvector is the eigenvector whose corresponding eigenvalue is closest to positive infinity. The minor eigenvector is the eigenvector whose corresponding eigenvalue is closest to negative infinity. The medium eigenvector is the eigenvector whose corresponding eigenvalue is between the major and minor eigenvalues.

Definition at line 131 of file vtkHyperStreamline.h.

void vtkHyperStreamline::SetIntegrationEigenvectorToMinor ( )
inline

Set / get the eigenvector field through which to ingrate. It is possible to integrate using the major, medium or minor eigenvector field. The major eigenvector is the eigenvector whose corresponding eigenvalue is closest to positive infinity. The minor eigenvector is the eigenvector whose corresponding eigenvalue is closest to negative infinity. The medium eigenvector is the eigenvector whose corresponding eigenvalue is between the major and minor eigenvalues.

Definition at line 133 of file vtkHyperStreamline.h.

void vtkHyperStreamline::IntegrateMajorEigenvector ( )
inline

Use the major eigenvector field as the vector field through which to integrate. The major eigenvector is the eigenvector whose corresponding eigenvalue is closest to positive infinity.

Definition at line 141 of file vtkHyperStreamline.h.

void vtkHyperStreamline::IntegrateMediumEigenvector ( )
inline

Use the medium eigenvector field as the vector field through which to integrate. The medium eigenvector is the eigenvector whose corresponding eigenvalue is between the major and minor eigenvalues.

Definition at line 149 of file vtkHyperStreamline.h.

void vtkHyperStreamline::IntegrateMinorEigenvector ( )
inline

Use the minor eigenvector field as the vector field through which to integrate. The minor eigenvector is the eigenvector whose corresponding eigenvalue is closest to negative infinity.

Definition at line 157 of file vtkHyperStreamline.h.

virtual void vtkHyperStreamline::SetIntegrationStepLength ( double  )
virtual

Set / get a nominal integration step size (expressed as a fraction of the size of each cell).

virtual double vtkHyperStreamline::GetIntegrationStepLength ( )
virtual

Set / get a nominal integration step size (expressed as a fraction of the size of each cell).

virtual void vtkHyperStreamline::SetStepLength ( double  )
virtual

Set / get the length of a tube segment composing the hyperstreamline. The length is specified as a fraction of the diagonal length of the input bounding box.

virtual double vtkHyperStreamline::GetStepLength ( )
virtual

Set / get the length of a tube segment composing the hyperstreamline. The length is specified as a fraction of the diagonal length of the input bounding box.

virtual void vtkHyperStreamline::SetIntegrationDirection ( int  )
virtual

Specify the direction in which to integrate the hyperstreamline.

virtual int vtkHyperStreamline::GetIntegrationDirection ( )
virtual

Specify the direction in which to integrate the hyperstreamline.

void vtkHyperStreamline::SetIntegrationDirectionToForward ( )
inline

Specify the direction in which to integrate the hyperstreamline.

Definition at line 181 of file vtkHyperStreamline.h.

void vtkHyperStreamline::SetIntegrationDirectionToBackward ( )
inline

Specify the direction in which to integrate the hyperstreamline.

Definition at line 183 of file vtkHyperStreamline.h.

void vtkHyperStreamline::SetIntegrationDirectionToIntegrateBothDirections ( )
inline

Specify the direction in which to integrate the hyperstreamline.

Definition at line 185 of file vtkHyperStreamline.h.

virtual void vtkHyperStreamline::SetTerminalEigenvalue ( double  )
virtual

Set/get terminal eigenvalue. If major eigenvalue falls below this value, hyperstreamline terminates propagation.

virtual double vtkHyperStreamline::GetTerminalEigenvalue ( )
virtual

Set/get terminal eigenvalue. If major eigenvalue falls below this value, hyperstreamline terminates propagation.

virtual void vtkHyperStreamline::SetNumberOfSides ( int  )
virtual

Set / get the number of sides for the hyperstreamlines. At a minimum, number of sides is 3.

virtual int vtkHyperStreamline::GetNumberOfSides ( )
virtual

Set / get the number of sides for the hyperstreamlines. At a minimum, number of sides is 3.

virtual void vtkHyperStreamline::SetRadius ( double  )
virtual

Set / get the initial tube radius. This is the maximum "elliptical" radius at the beginning of the tube. Radius varies based on ratio of eigenvalues. Note that tube section is actually elliptical and may become a point or line in cross section in some cases.

virtual double vtkHyperStreamline::GetRadius ( )
virtual

Set / get the initial tube radius. This is the maximum "elliptical" radius at the beginning of the tube. Radius varies based on ratio of eigenvalues. Note that tube section is actually elliptical and may become a point or line in cross section in some cases.

virtual void vtkHyperStreamline::SetLogScaling ( int  )
virtual

Turn on/off logarithmic scaling. If scaling is on, the log base 10 of the computed eigenvalues are used to scale the cross section radii.

virtual int vtkHyperStreamline::GetLogScaling ( )
virtual

Turn on/off logarithmic scaling. If scaling is on, the log base 10 of the computed eigenvalues are used to scale the cross section radii.

virtual void vtkHyperStreamline::LogScalingOn ( )
virtual

Turn on/off logarithmic scaling. If scaling is on, the log base 10 of the computed eigenvalues are used to scale the cross section radii.

virtual void vtkHyperStreamline::LogScalingOff ( )
virtual

Turn on/off logarithmic scaling. If scaling is on, the log base 10 of the computed eigenvalues are used to scale the cross section radii.

virtual int vtkHyperStreamline::RequestData ( vtkInformation *  ,
vtkInformationVector **  ,
vtkInformationVector *   
)
protectedvirtual
int vtkHyperStreamline::BuildTube ( vtkDataSet *  input,
vtkPolyData *  output 
)
protected
virtual int vtkHyperStreamline::FillInputPortInformation ( int  port,
vtkInformation *  info 
)
protectedvirtual

Member Data Documentation

int vtkHyperStreamline::StartFrom
protected

Definition at line 231 of file vtkHyperStreamline.h.

vtkIdType vtkHyperStreamline::StartCell
protected

Definition at line 234 of file vtkHyperStreamline.h.

int vtkHyperStreamline::StartSubId
protected

Definition at line 235 of file vtkHyperStreamline.h.

double vtkHyperStreamline::StartPCoords[3]
protected

Definition at line 236 of file vtkHyperStreamline.h.

double vtkHyperStreamline::StartPosition[3]
protected

Definition at line 239 of file vtkHyperStreamline.h.

vtkHyperArray* vtkHyperStreamline::Streamers
protected

Definition at line 242 of file vtkHyperStreamline.h.

int vtkHyperStreamline::NumberOfStreamers
protected

Definition at line 243 of file vtkHyperStreamline.h.

double vtkHyperStreamline::MaximumPropagationDistance
protected

Definition at line 246 of file vtkHyperStreamline.h.

int vtkHyperStreamline::IntegrationDirection
protected

Definition at line 249 of file vtkHyperStreamline.h.

double vtkHyperStreamline::IntegrationStepLength
protected

Definition at line 252 of file vtkHyperStreamline.h.

double vtkHyperStreamline::StepLength
protected

Definition at line 255 of file vtkHyperStreamline.h.

double vtkHyperStreamline::TerminalEigenvalue
protected

Definition at line 258 of file vtkHyperStreamline.h.

int vtkHyperStreamline::NumberOfSides
protected

Definition at line 261 of file vtkHyperStreamline.h.

double vtkHyperStreamline::Radius
protected

Definition at line 264 of file vtkHyperStreamline.h.

int vtkHyperStreamline::LogScaling
protected

Definition at line 267 of file vtkHyperStreamline.h.

int vtkHyperStreamline::IntegrationEigenvector
protected

Definition at line 270 of file vtkHyperStreamline.h.


The documentation for this class was generated from the following file: