Man Page for vtkHyperStreamline
Table of Contents

NAME

vtkHyperStreamline - generate hyperstreamline in arbitrary dataset

SYNOPSIS


#include "/opt/vtk-c++/graphics/vtkHyperStreamline.h"

class VTK_EXPORT vtkHyperStreamline : public vtkDataSetToPolyDataFilter

vtkHyperStreamline();
~vtkHyperStreamline();
static vtkHyperStreamline *New() {return new vtkHyperStreamline;};
const char *GetClassName() {return "vtkHyperStreamline";};
void PrintSelf(ostream& os, vtkIndent indent);
void SetStartLocation(int cellId, int subId, float pcoords[3]);
void SetStartLocation(int cellId, int subId, float r, float s, float t);
int GetStartLocation(int& subId, float pcoords[3]);
void SetStartPosition(float x[3]);
void SetStartPosition(float x, float y, float z);
float *GetStartPosition();
void SetMaximumPropagationDistance(float);
float GetMaximumPropagationDistance();
void IntegrateMajorEigenvector();
void IntegrateMediumEigenvector();
void IntegrateMinorEigenvector();
void SetIntegrationStepLength(float);
float GetIntegrationStepLength();
void SetStepLength(float);
float GetStepLength();
void SetIntegrationDirection(int);
VTK_INTEGRATE_FORWARD,VTK_INTEGRATE_BOTH_DIRECTIONS);
int GetIntegrationDirection();
void SetIntegrationDirectionToForward()
{this->SetIntegrationDirection(VTK_INTEGRATE_FORWARD);};
void SetIntegrationDirectionToBackward()
{this->SetIntegrationDirection(VTK_INTEGRATE_BACKWARD);};
void SetIntegrationDirectionToIntegrateBothDirections()
{this->SetIntegrationDirection(VTK_INTEGRATE_BOTH_DIRECTIONS);};
void SetTerminalEigenvalue(float);
float GetTerminalEigenvalue();
void SetNumberOfSides(int);
int GetNumberOfSides();
void SetRadius(float);
float GetRadius();
void SetLogScaling(int);
int GetLogScaling();
void LogScalingOn();
void LogScalingOff();

DESCRIPTION

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

DEFINED MACROS

VTK_INTEGRATE_FORWARD 0
VTK_INTEGRATE_BACKWARD 1
VTK_INTEGRATE_BOTH_DIRECTIONS 2

SUMMARY

void SetMaximumPropagationDistance(float)
Specify the maximum length of the hyperstreamline expressed as absolute distance (i.e., arc length) value.

void SetIntegrationStepLength(float)
Specify a nominal integration step size (expressed as a fraction of the size of each cell).

void SetStepLength(float)
Specify 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.

void SetIntegrationDirection(int)
Specify the direction in which to integrate the hyperstreamline.

void SetTerminalEigenvalue(float)
Set/get terminal eigenvalue. If major eigenvalue falls below this value, hyperstreamline terminates propagation.

void SetNumberOfSides(int)
Set the number of sides for the hyperstreamlines. At a minimum, number of sides is 3.

void SetRadius(float)
Set 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.

void SetLogScaling(int)
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.

vtkHyperStreamline()
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 SetStartLocation(int cellId, int subId, float 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 SetStartLocation(int cellId, int subId, float r, float s, float t)
Specify the start of the hyperstreamline in the cell coordinate system. That is, cellId and subId (if composite cell), and parametric coordinates.

int GetStartLocation(int& subId, float pcoords[3])
Get the starting location of the hyperstreamline in the cell coordinate system. Returns the cell that the starting point is in.

void SetStartPosition(float 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 SetStartPosition(float x, float y, float 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.

float *GetStartPosition()
Get the start position of the hyperstreamline in global x-y-z coordinates.

void IntegrateMajorEigenvector()
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.

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

void IntegrateMinorEigenvector()
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 negative infinity.


Table of Contents