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
vtkGaussianSplatter Class Reference

splat points into a volume with an elliptical, Gaussian distribution More...

#include <vtkGaussianSplatter.h>

Inherits vtkImageAlgorithm.

Public Types

typedef vtkImageAlgorithm Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkGaussianSplatterNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
void SetSampleDimensions (int i, int j, int k)
 
void SetSampleDimensions (int dim[3])
 
virtual int * GetSampleDimensions ()
 
virtual void GetSampleDimensions (int data[3])
 
virtual void SetModelBounds (double, double, double, double, double, double)
 
virtual void SetModelBounds (double[6])
 
virtual double * GetModelBounds ()
 
virtual void GetModelBounds (double data[6])
 
virtual void SetRadius (double)
 
virtual double GetRadius ()
 
virtual void SetScaleFactor (double)
 
virtual double GetScaleFactor ()
 
virtual void SetExponentFactor (double)
 
virtual double GetExponentFactor ()
 
virtual void SetNormalWarping (int)
 
virtual int GetNormalWarping ()
 
virtual void NormalWarpingOn ()
 
virtual void NormalWarpingOff ()
 
virtual void SetEccentricity (double)
 
virtual double GetEccentricity ()
 
virtual void SetScalarWarping (int)
 
virtual int GetScalarWarping ()
 
virtual void ScalarWarpingOn ()
 
virtual void ScalarWarpingOff ()
 
virtual void SetCapping (int)
 
virtual int GetCapping ()
 
virtual void CappingOn ()
 
virtual void CappingOff ()
 
virtual void SetCapValue (double)
 
virtual double GetCapValue ()
 
virtual void SetAccumulationMode (int)
 
virtual int GetAccumulationMode ()
 
void SetAccumulationModeToMin ()
 
void SetAccumulationModeToMax ()
 
void SetAccumulationModeToSum ()
 
const char * GetAccumulationModeAsString ()
 
virtual void SetNullValue (double)
 
virtual double GetNullValue ()
 
void ComputeModelBounds (vtkDataSet *input, vtkImageData *output, vtkInformation *outInfo)
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkGaussianSplatterSafeDownCast (vtkObjectBase *o)
 
static vtkGaussianSplatterNew ()
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkGaussianSplatter ()
 
 ~vtkGaussianSplatter ()
 
virtual int FillInputPortInformation (int port, vtkInformation *info)
 
virtual int RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
void Cap (vtkDoubleArray *s)
 
double Gaussian (double x[3])
 
double EccentricGaussian (double x[3])
 
double ScalarSampling (double s)
 
double PositionSampling (double)
 
void SetScalar (int idx, double dist2, vtkDoubleArray *newScalars)
 

Protected Attributes

int SampleDimensions [3]
 
double Radius
 
double ExponentFactor
 
double ModelBounds [6]
 
int NormalWarping
 
double Eccentricity
 
int ScalarWarping
 
double ScaleFactor
 
int Capping
 
double CapValue
 
int AccumulationMode
 

Detailed Description

splat points into a volume with an elliptical, Gaussian distribution

vtkGaussianSplatter is a filter that injects input points into a structured points (volume) dataset. As each point is injected, it "splats" or distributes values to nearby voxels. Data is distributed using an elliptical, Gaussian distribution function. The distribution function is modified using scalar values (expands distribution) or normals (creates ellipsoidal distribution rather than spherical).

In general, the Gaussian distribution function f(x) around a given splat point p is given by

f(x) = ScaleFactor * exp( ExponentFactor*((r/Radius)**2) )

where x is the current voxel sample point; r is the distance |x-p| ExponentFactor <= 0.0, and ScaleFactor can be multiplied by the scalar value of the point p that is currently being splatted.

If points normals are present (and NormalWarping is on), then the splat function becomes elliptical (as compared to the spherical one described by the previous equation). The Gaussian distribution function then becomes:

f(x) = ScaleFactor *
          exp( ExponentFactor*( ((rxy/E)**2 + z**2)/R**2) )

where E is a user-defined eccentricity factor that controls the elliptical shape of the splat; z is the distance of the current voxel sample point along normal N; and rxy is the distance of x in the direction prependicular to N.

This class is typically used to convert point-valued distributions into a volume representation. The volume is then usually iso-surfaced or volume rendered to generate a visualization. It can be used to create surfaces from point distributions, or to create structure (i.e., topology) when none exists.

Warning
The input to this filter is any dataset type. This filter can be used to resample any form of data, i.e., the input data need not be unstructured.
Some voxels may never receive a contribution during the splatting process. The final value of these points can be specified with the "NullValue" instance variable.
See Also
vtkShepardMethod
Examples:
vtkGaussianSplatter (Examples)
Tests:
vtkGaussianSplatter (Tests)

Definition at line 85 of file vtkGaussianSplatter.h.

Member Typedef Documentation

typedef vtkImageAlgorithm vtkGaussianSplatter::Superclass

Definition at line 88 of file vtkGaussianSplatter.h.

Constructor & Destructor Documentation

vtkGaussianSplatter::vtkGaussianSplatter ( )
protected
vtkGaussianSplatter::~vtkGaussianSplatter ( )
inlineprotected

Definition at line 212 of file vtkGaussianSplatter.h.

Member Function Documentation

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

Construct object with dimensions=(50,50,50); automatic computation of bounds; a splat radius of 0.1; an exponent factor of -5; and normal and scalar warping turned on.

void vtkGaussianSplatter::SetSampleDimensions ( int  i,
int  j,
int  k 
)

Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.

void vtkGaussianSplatter::SetSampleDimensions ( int  dim[3])

Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.

virtual int* vtkGaussianSplatter::GetSampleDimensions ( )
virtual

Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.

virtual void vtkGaussianSplatter::GetSampleDimensions ( int  data[3])
virtual

Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.

virtual void vtkGaussianSplatter::SetModelBounds ( double  ,
double  ,
double  ,
double  ,
double  ,
double   
)
virtual

Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.

virtual void vtkGaussianSplatter::SetModelBounds ( double  [6])
virtual

Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.

virtual double* vtkGaussianSplatter::GetModelBounds ( )
virtual

Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.

virtual void vtkGaussianSplatter::GetModelBounds ( double  data[6])
virtual

Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.

virtual void vtkGaussianSplatter::SetRadius ( double  )
virtual

Set / get the radius of propagation of the splat. This value is expressed as a percentage of the length of the longest side of the sampling volume. Smaller numbers greatly reduce execution time.

virtual double vtkGaussianSplatter::GetRadius ( )
virtual

Set / get the radius of propagation of the splat. This value is expressed as a percentage of the length of the longest side of the sampling volume. Smaller numbers greatly reduce execution time.

virtual void vtkGaussianSplatter::SetScaleFactor ( double  )
virtual

Multiply Gaussian splat distribution by this value. If ScalarWarping is on, then the Scalar value will be multiplied by the ScaleFactor times the Gaussian function.

virtual double vtkGaussianSplatter::GetScaleFactor ( )
virtual

Multiply Gaussian splat distribution by this value. If ScalarWarping is on, then the Scalar value will be multiplied by the ScaleFactor times the Gaussian function.

virtual void vtkGaussianSplatter::SetExponentFactor ( double  )
virtual

Set / get the sharpness of decay of the splats. This is the exponent constant in the Gaussian equation. Normally this is a negative value.

virtual double vtkGaussianSplatter::GetExponentFactor ( )
virtual

Set / get the sharpness of decay of the splats. This is the exponent constant in the Gaussian equation. Normally this is a negative value.

virtual void vtkGaussianSplatter::SetNormalWarping ( int  )
virtual

Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.

virtual int vtkGaussianSplatter::GetNormalWarping ( )
virtual

Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.

virtual void vtkGaussianSplatter::NormalWarpingOn ( )
virtual

Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.

virtual void vtkGaussianSplatter::NormalWarpingOff ( )
virtual

Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.

virtual void vtkGaussianSplatter::SetEccentricity ( double  )
virtual

Control the shape of elliptical splatting. Eccentricity is the ratio of the major axis (aligned along normal) to the minor (axes) aligned along other two axes. So Eccentricity > 1 creates needles with the long axis in the direction of the normal; Eccentricity<1 creates pancakes perpendicular to the normal vector.

virtual double vtkGaussianSplatter::GetEccentricity ( )
virtual

Control the shape of elliptical splatting. Eccentricity is the ratio of the major axis (aligned along normal) to the minor (axes) aligned along other two axes. So Eccentricity > 1 creates needles with the long axis in the direction of the normal; Eccentricity<1 creates pancakes perpendicular to the normal vector.

virtual void vtkGaussianSplatter::SetScalarWarping ( int  )
virtual

Turn on/off the scaling of splats by scalar value.

virtual int vtkGaussianSplatter::GetScalarWarping ( )
virtual

Turn on/off the scaling of splats by scalar value.

virtual void vtkGaussianSplatter::ScalarWarpingOn ( )
virtual

Turn on/off the scaling of splats by scalar value.

virtual void vtkGaussianSplatter::ScalarWarpingOff ( )
virtual

Turn on/off the scaling of splats by scalar value.

virtual void vtkGaussianSplatter::SetCapping ( int  )
virtual

Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.

virtual int vtkGaussianSplatter::GetCapping ( )
virtual

Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.

virtual void vtkGaussianSplatter::CappingOn ( )
virtual

Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.

virtual void vtkGaussianSplatter::CappingOff ( )
virtual

Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.

virtual void vtkGaussianSplatter::SetCapValue ( double  )
virtual

Specify the cap value to use. (This instance variable only has effect if the ivar Capping is on.)

virtual double vtkGaussianSplatter::GetCapValue ( )
virtual

Specify the cap value to use. (This instance variable only has effect if the ivar Capping is on.)

virtual void vtkGaussianSplatter::SetAccumulationMode ( int  )
virtual

Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.

virtual int vtkGaussianSplatter::GetAccumulationMode ( )
virtual

Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.

void vtkGaussianSplatter::SetAccumulationModeToMin ( )
inline

Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.

Definition at line 186 of file vtkGaussianSplatter.h.

void vtkGaussianSplatter::SetAccumulationModeToMax ( )
inline

Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.

Definition at line 188 of file vtkGaussianSplatter.h.

void vtkGaussianSplatter::SetAccumulationModeToSum ( )
inline

Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.

Definition at line 190 of file vtkGaussianSplatter.h.

const char* vtkGaussianSplatter::GetAccumulationModeAsString ( )

Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.

virtual void vtkGaussianSplatter::SetNullValue ( double  )
virtual

Set the Null value for output points not receiving a contribution from the input points. (This is the initial value of the voxel samples.)

virtual double vtkGaussianSplatter::GetNullValue ( )
virtual

Set the Null value for output points not receiving a contribution from the input points. (This is the initial value of the voxel samples.)

void vtkGaussianSplatter::ComputeModelBounds ( vtkDataSet *  input,
vtkImageData *  output,
vtkInformation *  outInfo 
)

Compute the size of the sample bounding box automatically from the input data. This is an internal helper function.

virtual int vtkGaussianSplatter::FillInputPortInformation ( int  port,
vtkInformation *  info 
)
protectedvirtual
virtual int vtkGaussianSplatter::RequestInformation ( vtkInformation *  ,
vtkInformationVector **  ,
vtkInformationVector *   
)
protectedvirtual
virtual int vtkGaussianSplatter::RequestData ( vtkInformation *  ,
vtkInformationVector **  ,
vtkInformationVector *   
)
protectedvirtual
void vtkGaussianSplatter::Cap ( vtkDoubleArray *  s)
protected
double vtkGaussianSplatter::Gaussian ( double  x[3])
protected
double vtkGaussianSplatter::EccentricGaussian ( double  x[3])
protected
double vtkGaussianSplatter::ScalarSampling ( double  s)
inlineprotected

Definition at line 237 of file vtkGaussianSplatter.h.

double vtkGaussianSplatter::PositionSampling ( double  )
inlineprotected

Definition at line 239 of file vtkGaussianSplatter.h.

void vtkGaussianSplatter::SetScalar ( int  idx,
double  dist2,
vtkDoubleArray *  newScalars 
)
protected

Member Data Documentation

int vtkGaussianSplatter::SampleDimensions[3]
protected

Definition at line 223 of file vtkGaussianSplatter.h.

double vtkGaussianSplatter::Radius
protected

Definition at line 224 of file vtkGaussianSplatter.h.

double vtkGaussianSplatter::ExponentFactor
protected

Definition at line 225 of file vtkGaussianSplatter.h.

double vtkGaussianSplatter::ModelBounds[6]
protected

Definition at line 226 of file vtkGaussianSplatter.h.

int vtkGaussianSplatter::NormalWarping
protected

Definition at line 227 of file vtkGaussianSplatter.h.

double vtkGaussianSplatter::Eccentricity
protected

Definition at line 228 of file vtkGaussianSplatter.h.

int vtkGaussianSplatter::ScalarWarping
protected

Definition at line 229 of file vtkGaussianSplatter.h.

double vtkGaussianSplatter::ScaleFactor
protected

Definition at line 230 of file vtkGaussianSplatter.h.

int vtkGaussianSplatter::Capping
protected

Definition at line 231 of file vtkGaussianSplatter.h.

double vtkGaussianSplatter::CapValue
protected

Definition at line 232 of file vtkGaussianSplatter.h.

int vtkGaussianSplatter::AccumulationMode
protected

Definition at line 233 of file vtkGaussianSplatter.h.


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