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

compute curvatures (Gauss and mean) of a Polydata object More...

#include <vtkCurvatures.h>

Inheritance diagram for vtkCurvatures:
[legend]
Collaboration diagram for vtkCurvatures:
[legend]

Public Types

typedef vtkPolyDataAlgorithm Superclass
 
- Public Types inherited from vtkPolyDataAlgorithm
typedef vtkAlgorithm Superclass
 
- Public Types inherited from vtkAlgorithm
typedef vtkObject Superclass
 
enum  DesiredOutputPrecision { SINGLE_PRECISION, DOUBLE_PRECISION, DEFAULT_PRECISION }
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkCurvaturesNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
virtual void SetCurvatureType (int)
 
virtual int GetCurvatureType ()
 
void SetCurvatureTypeToGaussian ()
 
void SetCurvatureTypeToMean ()
 
void SetCurvatureTypeToMaximum ()
 
void SetCurvatureTypeToMinimum ()
 
- Public Member Functions inherited from vtkPolyDataAlgorithm
vtkPolyDataAlgorithmNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
vtkDataObjectGetInput ()
 
vtkDataObjectGetInput (int port)
 
vtkPolyDataGetPolyDataInput (int port)
 
vtkPolyDataGetOutput ()
 
vtkPolyDataGetOutput (int)
 
virtual void SetOutput (vtkDataObject *d)
 
virtual int ProcessRequest (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
void SetInputData (vtkDataObject *)
 
void SetInputData (int, vtkDataObject *)
 
void AddInputData (vtkDataObject *)
 
void AddInputData (int, vtkDataObject *)
 
- Public Member Functions inherited from vtkAlgorithm
vtkAlgorithmNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
int HasExecutive ()
 
vtkExecutiveGetExecutive ()
 
virtual void SetExecutive (vtkExecutive *executive)
 
virtual int ModifyRequest (vtkInformation *request, int when)
 
vtkInformation * GetInputPortInformation (int port)
 
vtkInformation * GetOutputPortInformation (int port)
 
int GetNumberOfInputPorts ()
 
int GetNumberOfOutputPorts ()
 
void UpdateProgress (double amount)
 
vtkInformation * GetInputArrayInformation (int idx)
 
void RemoveAllInputs ()
 
vtkDataObjectGetOutputDataObject (int port)
 
virtual void RemoveInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void RemoveInputConnection (int port, int idx)
 
virtual void RemoveAllInputConnections (int port)
 
int GetNumberOfInputConnections (int port)
 
int GetTotalNumberOfInputConnections ()
 
vtkAlgorithmOutputGetInputConnection (int port, int index)
 
vtkAlgorithmGetInputAlgorithm (int port, int index, int &algPort)
 
vtkAlgorithmGetInputAlgorithm (int port, int index)
 
vtkExecutiveGetInputExecutive (int port, int index)
 
vtkInformation * GetInputInformation (int port, int index)
 
vtkInformation * GetOutputInformation (int port)
 
virtual void UpdateInformation ()
 
virtual void PropagateUpdateExtent ()
 
virtual void UpdateWholeExtent ()
 
void ConvertTotalInputToPortConnection (int ind, int &port, int &conn)
 
virtual double ComputePriority ()
 
int SetUpdateExtentToWholeExtent (int port)
 
int SetUpdateExtentToWholeExtent ()
 
void SetUpdateExtent (int port, int extent[6])
 
int ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo)
 
virtual int ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, unsigned long *mtime)
 
virtual vtkInformation * GetInformation ()
 
virtual void SetInformation (vtkInformation *)
 
virtual void Register (vtkObjectBase *o)
 
virtual void UnRegister (vtkObjectBase *o)
 
virtual void SetAbortExecute (int)
 
virtual int GetAbortExecute ()
 
virtual void AbortExecuteOn ()
 
virtual void AbortExecuteOff ()
 
virtual void SetProgress (double)
 
virtual double GetProgress ()
 
void SetProgressText (const char *ptext)
 
virtual char * GetProgressText ()
 
virtual unsigned long GetErrorCode ()
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType)
 
virtual void SetInputArrayToProcess (int idx, vtkInformation *info)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName)
 
vtkDataObjectGetInputDataObject (int port, int connection)
 
virtual void SetInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void SetInputConnection (vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (vtkAlgorithmOutput *input)
 
virtual void SetInputDataObject (int port, vtkDataObject *data)
 
virtual void SetInputDataObject (vtkDataObject *data)
 
virtual void AddInputDataObject (int port, vtkDataObject *data)
 
virtual void AddInputDataObject (vtkDataObject *data)
 
vtkAlgorithmOutputGetOutputPort (int index)
 
vtkAlgorithmOutputGetOutputPort ()
 
vtkAlgorithmGetInputAlgorithm ()
 
vtkExecutiveGetInputExecutive ()
 
vtkInformation * GetInputInformation ()
 
virtual void Update (int port)
 
virtual void Update ()
 
virtual void SetReleaseDataFlag (int)
 
virtual int GetReleaseDataFlag ()
 
void ReleaseDataFlagOn ()
 
void ReleaseDataFlagOff ()
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, vtkDataObject *output)
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType)
 
void SetUpdateExtent (int port, int piece, int numPieces, int ghostLevel)
 
void SetUpdateExtent (int piece, int numPieces, int ghostLevel)
 
void SetUpdateExtent (int extent[6])
 
int * GetUpdateExtent ()
 
int * GetUpdateExtent (int port)
 
void GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int extent[6])
 
void GetUpdateExtent (int port, int extent[6])
 
int GetUpdatePiece ()
 
int GetUpdatePiece (int port)
 
int GetUpdateNumberOfPieces ()
 
int GetUpdateNumberOfPieces (int port)
 
int GetUpdateGhostLevel ()
 
int GetUpdateGhostLevel (int port)
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkCurvaturesSafeDownCast (vtkObjectBase *o)
 
static vtkCurvaturesNew ()
 
- Static Public Member Functions inherited from vtkPolyDataAlgorithm
static vtkPolyDataAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static vtkPolyDataAlgorithmSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkAlgorithm
static vtkAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static vtkAlgorithmSafeDownCast (vtkObjectBase *o)
 
static void SetDefaultExecutivePrototype (vtkExecutive *proto)
 
static vtkInformationIntegerKey * INPUT_IS_OPTIONAL ()
 
static vtkInformationIntegerKey * INPUT_IS_REPEATABLE ()
 
static
vtkInformationInformationVectorKey * 
INPUT_REQUIRED_FIELDS ()
 
static
vtkInformationStringVectorKey * 
INPUT_REQUIRED_DATA_TYPE ()
 
static
vtkInformationInformationVectorKey * 
INPUT_ARRAYS_TO_PROCESS ()
 
static vtkInformationIntegerKey * INPUT_PORT ()
 
static vtkInformationIntegerKey * INPUT_CONNECTION ()
 
static vtkInformationIntegerKey * PRESERVES_DATASET ()
 
static vtkInformationIntegerKey * PRESERVES_GEOMETRY ()
 
static vtkInformationIntegerKey * PRESERVES_BOUNDS ()
 
static vtkInformationIntegerKey * PRESERVES_TOPOLOGY ()
 
static vtkInformationIntegerKey * PRESERVES_ATTRIBUTES ()
 
static vtkInformationIntegerKey * PRESERVES_RANGES ()
 
static vtkInformationIntegerKey * MANAGES_METAINFORMATION ()
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
void GetGaussCurvature (vtkPolyData *output)
 
void GetMeanCurvature (vtkPolyData *output)
 
void GetMaximumCurvature (vtkPolyData *input, vtkPolyData *output)
 
void GetMinimumCurvature (vtkPolyData *input, vtkPolyData *output)
 
- Protected Member Functions inherited from vtkPolyDataAlgorithm
 vtkPolyDataAlgorithm ()
 
 ~vtkPolyDataAlgorithm ()
 
virtual int RequestInformation (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
 
virtual int FillOutputPortInformation (int port, vtkInformation *info)
 
virtual int FillInputPortInformation (int port, vtkInformation *info)
 
virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
- Protected Member Functions inherited from vtkAlgorithm
 vtkAlgorithm ()
 
 ~vtkAlgorithm ()
 
virtual void SetNumberOfInputPorts (int n)
 
virtual void SetNumberOfOutputPorts (int n)
 
int InputPortIndexInRange (int index, const char *action)
 
int OutputPortIndexInRange (int index, const char *action)
 
int GetInputArrayAssociation (int idx, vtkInformationVector **inputVector)
 
virtual vtkExecutiveCreateDefaultExecutive ()
 
virtual void ReportReferences (vtkGarbageCollector *)
 
virtual void SetNumberOfInputConnections (int port, int n)
 
int GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector)
 
int GetInputArrayAssociation (int idx, vtkDataObject *input)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkDataArray * GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkDataArray * GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkDataObject *input)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkDataObject *input)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkInformation * GetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector)
 
virtual void SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input)
 
void SetInputDataInternal (int port, vtkDataObject *input)
 
void AddInputDataInternal (int port, vtkDataObject *input)
 
virtual void SetErrorCode (unsigned long)
 

Protected Attributes

int CurvatureType
 
int InvertMeanCurvature
 
- Protected Attributes inherited from vtkAlgorithm
vtkInformation * Information
 
double Progress
 
char * ProgressText
 
unsigned long ErrorCode
 
virtual void SetInvertMeanCurvature (int)
 
virtual int GetInvertMeanCurvature ()
 
virtual void InvertMeanCurvatureOn ()
 
virtual void InvertMeanCurvatureOff ()
 
 vtkCurvatures ()
 

Additional Inherited Members

- Public Attributes inherited from vtkAlgorithm
int AbortExecute
 
- Static Protected Member Functions inherited from vtkAlgorithm
static vtkInformationIntegerKey * PORT_REQUIREMENTS_FILLED ()
 
- Static Protected Attributes inherited from vtkAlgorithm
static vtkExecutiveDefaultExecutivePrototype
 

Detailed Description

compute curvatures (Gauss and mean) of a Polydata object

vtkCurvatures takes a polydata input and computes the curvature of the mesh at each point. Four possible methods of computation are available :

Gauss Curvature discrete Gauss curvature (K) computation, $K(vertex v) = 2*PI-\sum_{facet neighbs f of v} (angle_f at v)$ The contribution of every facet is for the moment weighted by $Area(facet)/3$ The units of Gaussian Curvature are $[1/m^2]$

Mean Curvature $H(vertex v) = average over edges neighbs e of H(e)$ $H(edge e) = length(e)*dihedral_angle(e)$ NB: dihedral_angle is the ORIENTED angle between -PI and PI, this means that the surface is assumed to be orientable the computation creates the orientation The units of Mean Curvature are [1/m]

Maximum ( $k_max$) and Minimum ( $k_min$) Principal Curvatures $k_max = H + sqrt(H^2 - K)$ $k_min = H - sqrt(H^2 - K)$ Excepting spherical and planar surfaces which have equal principal curvatures, the curvature at a point on a surface varies with the direction one "sets off" from the point. For all directions, the curvature will pass through two extrema: a minimum ( $k_min$) and a maximum ( $k_max$) which occur at mutually orthogonal directions to each other.

NB. The sign of the Gauss curvature is a geometric ivariant, it should be +ve when the surface looks like a sphere, -ve when it looks like a saddle, however, the sign of the Mean curvature is not, it depends on the convention for normals - This code assumes that normals point outwards (ie from the surface of a sphere outwards). If a given mesh produces curvatures of opposite senses then the flag InvertMeanCurvature can be set and the Curvature reported by the Mean calculation will be inverted.

Thanks:
Philip Batchelor phili.nosp@m.pp.b.nosp@m.atche.nosp@m.lor@.nosp@m.kcl.a.nosp@m.c.uk for creating and contributing the class and Andrew Maclean a.mac.nosp@m.lean.nosp@m.@acfr.nosp@m..usy.nosp@m.d.edu.nosp@m..au for cleanups and fixes. Thanks also to Goodwin Lawlor for contributing patch to calculate principal curvatures
Tests:
vtkCurvatures (Tests)

Definition at line 76 of file vtkCurvatures.h.

Member Typedef Documentation

Definition at line 79 of file vtkCurvatures.h.

Constructor & Destructor Documentation

vtkCurvatures::vtkCurvatures ( )
protected

Set/Get the flag which inverts the mean curvature calculation for meshes with inward pointing normals (default false)

Member Function Documentation

static int vtkCurvatures::IsTypeOf ( const char *  type)
static
virtual int vtkCurvatures::IsA ( const char *  type)
virtual

Reimplemented from vtkPolyDataAlgorithm.

static vtkCurvatures* vtkCurvatures::SafeDownCast ( vtkObjectBase *  o)
static
virtual vtkObjectBase* vtkCurvatures::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkPolyDataAlgorithm.

vtkCurvatures* vtkCurvatures::NewInstance ( ) const
void vtkCurvatures::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
static vtkCurvatures* vtkCurvatures::New ( )
static

Construct with curvature type set to Gauss

virtual void vtkCurvatures::SetCurvatureType ( int  )
virtual

Set/Get Curvature type VTK_CURVATURE_GAUSS: Gaussian curvature, stored as DataArray "Gauss_Curvature" VTK_CURVATURE_MEAN : Mean curvature, stored as DataArray "Mean_Curvature"

virtual int vtkCurvatures::GetCurvatureType ( )
virtual

Set/Get Curvature type VTK_CURVATURE_GAUSS: Gaussian curvature, stored as DataArray "Gauss_Curvature" VTK_CURVATURE_MEAN : Mean curvature, stored as DataArray "Mean_Curvature"

void vtkCurvatures::SetCurvatureTypeToGaussian ( )
inline

Set/Get Curvature type VTK_CURVATURE_GAUSS: Gaussian curvature, stored as DataArray "Gauss_Curvature" VTK_CURVATURE_MEAN : Mean curvature, stored as DataArray "Mean_Curvature"

Definition at line 91 of file vtkCurvatures.h.

void vtkCurvatures::SetCurvatureTypeToMean ( )
inline

Set/Get Curvature type VTK_CURVATURE_GAUSS: Gaussian curvature, stored as DataArray "Gauss_Curvature" VTK_CURVATURE_MEAN : Mean curvature, stored as DataArray "Mean_Curvature"

Definition at line 93 of file vtkCurvatures.h.

void vtkCurvatures::SetCurvatureTypeToMaximum ( )
inline

Set/Get Curvature type VTK_CURVATURE_GAUSS: Gaussian curvature, stored as DataArray "Gauss_Curvature" VTK_CURVATURE_MEAN : Mean curvature, stored as DataArray "Mean_Curvature"

Definition at line 95 of file vtkCurvatures.h.

void vtkCurvatures::SetCurvatureTypeToMinimum ( )
inline

Set/Get Curvature type VTK_CURVATURE_GAUSS: Gaussian curvature, stored as DataArray "Gauss_Curvature" VTK_CURVATURE_MEAN : Mean curvature, stored as DataArray "Mean_Curvature"

Definition at line 97 of file vtkCurvatures.h.

virtual void vtkCurvatures::SetInvertMeanCurvature ( int  )
virtual

Set/Get the flag which inverts the mean curvature calculation for meshes with inward pointing normals (default false)

virtual int vtkCurvatures::GetInvertMeanCurvature ( )
virtual

Set/Get the flag which inverts the mean curvature calculation for meshes with inward pointing normals (default false)

virtual void vtkCurvatures::InvertMeanCurvatureOn ( )
virtual

Set/Get the flag which inverts the mean curvature calculation for meshes with inward pointing normals (default false)

virtual void vtkCurvatures::InvertMeanCurvatureOff ( )
virtual

Set/Get the flag which inverts the mean curvature calculation for meshes with inward pointing normals (default false)

int vtkCurvatures::RequestData ( vtkInformation *  request,
vtkInformationVector **  inputVector,
vtkInformationVector *  outputVector 
)
protectedvirtual

This is called by the superclass. This is the method you should override.

Reimplemented from vtkPolyDataAlgorithm.

void vtkCurvatures::GetGaussCurvature ( vtkPolyData output)
protected

discrete Gauss curvature (K) computation, cf http://www-ipg.umds.ac.uk/p.batchelor/curvatures/curvatures.html

void vtkCurvatures::GetMeanCurvature ( vtkPolyData output)
protected
void vtkCurvatures::GetMaximumCurvature ( vtkPolyData input,
vtkPolyData output 
)
protected

Maximum principal curvature $k_max = H + sqrt(H^2 -K)$

void vtkCurvatures::GetMinimumCurvature ( vtkPolyData input,
vtkPolyData output 
)
protected

Minimum principal curvature $k_min = H - sqrt(H^2 -K)$

Member Data Documentation

int vtkCurvatures::CurvatureType
protected

Definition at line 130 of file vtkCurvatures.h.

int vtkCurvatures::InvertMeanCurvature
protected

Definition at line 131 of file vtkCurvatures.h.


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