VMTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkvmtkPolyDataLocalGeometry Class Reference

Compute shape-related quantities over a surface. More...

#include <vtkvmtkPolyDataLocalGeometry.h>

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

Public Types

typedef vtkPolyDataAlgorithm Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkvmtkPolyDataLocalGeometryNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent) VTK_OVERRIDE
 
virtual void SetAdjustBoundaryValues (int)
 
virtual int GetAdjustBoundaryValues ()
 
virtual void AdjustBoundaryValuesOn ()
 
virtual void AdjustBoundaryValuesOff ()
 
virtual void SetComputePoleVectors (int)
 
virtual int GetComputePoleVectors ()
 
virtual void ComputePoleVectorsOn ()
 
virtual void ComputePoleVectorsOff ()
 
virtual void SetComputeGeodesicDistance (int)
 
virtual int GetComputeGeodesicDistance ()
 
virtual void ComputeGeodesicDistanceOn ()
 
virtual void ComputeGeodesicDistanceOff ()
 
virtual void SetGeodesicDistanceArrayName (const char *)
 
virtual char * GetGeodesicDistanceArrayName ()
 
virtual void SetComputeNormalizedTangencyDeviation (int)
 
virtual int GetComputeNormalizedTangencyDeviation ()
 
virtual void ComputeNormalizedTangencyDeviationOn ()
 
virtual void ComputeNormalizedTangencyDeviationOff ()
 
virtual void SetNormalizedTangencyDeviationArrayName (const char *)
 
virtual char * GetNormalizedTangencyDeviationArrayName ()
 
virtual void SetComputeEuclideanDistance (int)
 
virtual int GetComputeEuclideanDistance ()
 
virtual void ComputeEuclideanDistanceOn ()
 
virtual void ComputeEuclideanDistanceOff ()
 
virtual void SetEuclideanDistanceArrayName (const char *)
 
virtual char * GetEuclideanDistanceArrayName ()
 
virtual void SetComputeCenterlineVectors (int)
 
virtual int GetComputeCenterlineVectors ()
 
virtual void ComputeCenterlineVectorsOn ()
 
virtual void ComputeCenterlineVectorsOff ()
 
virtual void SetCenterlineVectorsArrayName (const char *)
 
virtual char * GetCenterlineVectorsArrayName ()
 
virtual void SetComputeCellIds (int)
 
virtual int GetComputeCellIds ()
 
virtual void ComputeCellIdsOn ()
 
virtual void ComputeCellIdsOff ()
 
virtual void SetCellIdsArrayName (const char *)
 
virtual char * GetCellIdsArrayName ()
 
virtual void SetComputePCoords (int)
 
virtual int GetComputePCoords ()
 
virtual void ComputePCoordsOn ()
 
virtual void ComputePCoordsOff ()
 
virtual void SetPCoordsArrayName (const char *)
 
virtual char * GetPCoordsArrayName ()
 
virtual void SetVoronoiDiagram (vtkPolyData *)
 
virtual vtkPolyData * GetVoronoiDiagram ()
 
virtual void SetVoronoiGeodesicDistanceArrayName (const char *)
 
virtual char * GetVoronoiGeodesicDistanceArrayName ()
 
virtual void SetVoronoiPoleCenterlineVectorsArrayName (const char *)
 
virtual char * GetVoronoiPoleCenterlineVectorsArrayName ()
 
virtual void SetVoronoiCellIdsArrayName (const char *)
 
virtual char * GetVoronoiCellIdsArrayName ()
 
virtual void SetVoronoiPCoordsArrayName (const char *)
 
virtual char * GetVoronoiPCoordsArrayName ()
 
virtual void SetPoleIds (vtkIdList *)
 
virtual vtkIdList * GetPoleIds ()
 
virtual void SetPoleVectorsArrayName (const char *)
 
virtual char * GetPoleVectorsArrayName ()
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkvmtkPolyDataLocalGeometrySafeDownCast (vtkObjectBase *o)
 
static vtkvmtkPolyDataLocalGeometryNew ()
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkvmtkPolyDataLocalGeometry ()
 
 ~vtkvmtkPolyDataLocalGeometry ()
 
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE
 
void AdjustBoundaryQuantities (vtkPolyData *output)
 

Protected Attributes

int ComputePoleVectors
 
int ComputeGeodesicDistance
 
int ComputeNormalizedTangencyDeviation
 
int ComputeEuclideanDistance
 
int ComputeCenterlineVectors
 
int ComputeCellIds
 
int ComputePCoords
 
int AdjustBoundaryValues
 
char * PoleVectorsArrayName
 
char * GeodesicDistanceArrayName
 
char * NormalizedTangencyDeviationArrayName
 
char * EuclideanDistanceArrayName
 
char * CenterlineVectorsArrayName
 
char * CellIdsArrayName
 
char * PCoordsArrayName
 
char * VoronoiGeodesicDistanceArrayName
 
char * VoronoiPoleCenterlineVectorsArrayName
 
char * VoronoiCellIdsArrayName
 
char * VoronoiPCoordsArrayName
 
vtkPolyData * VoronoiDiagram
 
vtkIdList * PoleIds
 

Detailed Description

Compute shape-related quantities over a surface.

Date
2006/04/06 16:46:43
Revision
1.4

This class computes geodesic distance to centerlines and normalized tangency deviation distribution over a surface given the Voronoi diagram of its points, the ids of Voronoi diagram points which are poles of surface points, and the field of the geodesic distance from centerlines computed over the Voronoi diagram.

Geodesic distance to centerlines field is computed as

\[ D_g(\mathbf{x}) = T(\mathbf{p}(\mathbf{x})) + |\mathbf{p}(\mathbf{x}) - \mathbf{x}| \]

where T(x) is the geodesic distance to centerlines field defined on the Voronoi diagram (computed by solving the Eikonal equation with unit speed over the Voronoi diagram by means of vtkNonManifoldFastMarching), and p(x) is the pole associated with surface point x.

Normalized tangency deviation is a normalized measure of how much a surface point is far from being a tangency point to the evelope of maximal spheres defined on the centerlines (their envelope is the maximal inscribed cylinder), and it is computed as

\[\mathit{NTD}=\frac{T(\mathbf{p}(\mathbf{x}))}{D_g(\mathbf{x})}\]

This quantity ranges from 0 to 1, and it is independent from the radius of the maximal inscribed cylinder (on an elliptical base cylinder, NTD only depends on base ellipse eccentricity).

The description given here is particularly suited for the description of tubular surfaces in terms of centerlines, but this class can be used without this assumption. Whenever a geodesic distance field is computed over the Voronoi diagram associated with a shape from a subset of the Voronoi diagram itself (in this context, the centerlines), the surface geodesic distance field and the normalized tangency deviation can be defined, and this class can be used to compute them.

See also
vtkNonManifoldFastMarching vtkVoronoiDiagram3D

Definition at line 50 of file vtkvmtkPolyDataLocalGeometry.h.

Member Typedef Documentation

◆ Superclass

typedef vtkPolyDataAlgorithm vtkvmtkPolyDataLocalGeometry::Superclass

Definition at line 53 of file vtkvmtkPolyDataLocalGeometry.h.

Constructor & Destructor Documentation

◆ vtkvmtkPolyDataLocalGeometry()

vtkvmtkPolyDataLocalGeometry::vtkvmtkPolyDataLocalGeometry ( )
protected

◆ ~vtkvmtkPolyDataLocalGeometry()

vtkvmtkPolyDataLocalGeometry::~vtkvmtkPolyDataLocalGeometry ( )
protected

Member Function Documentation

◆ IsTypeOf()

static int vtkvmtkPolyDataLocalGeometry::IsTypeOf ( const char *  type)
static

◆ IsA()

virtual int vtkvmtkPolyDataLocalGeometry::IsA ( const char *  type)
virtual

◆ SafeDownCast()

static vtkvmtkPolyDataLocalGeometry* vtkvmtkPolyDataLocalGeometry::SafeDownCast ( vtkObjectBase *  o)
static

◆ NewInstanceInternal()

virtual vtkObjectBase* vtkvmtkPolyDataLocalGeometry::NewInstanceInternal ( ) const
protectedvirtual

◆ NewInstance()

vtkvmtkPolyDataLocalGeometry* vtkvmtkPolyDataLocalGeometry::NewInstance ( ) const

◆ PrintSelf()

void vtkvmtkPolyDataLocalGeometry::PrintSelf ( ostream &  os,
vtkIndent  indent 
)

◆ New()

static vtkvmtkPolyDataLocalGeometry* vtkvmtkPolyDataLocalGeometry::New ( )
static

◆ SetComputePoleVectors()

virtual void vtkvmtkPolyDataLocalGeometry::SetComputePoleVectors ( int  )
virtual

TODO

◆ GetComputePoleVectors()

virtual int vtkvmtkPolyDataLocalGeometry::GetComputePoleVectors ( )
virtual

TODO

◆ ComputePoleVectorsOn()

virtual void vtkvmtkPolyDataLocalGeometry::ComputePoleVectorsOn ( )
virtual

TODO

◆ ComputePoleVectorsOff()

virtual void vtkvmtkPolyDataLocalGeometry::ComputePoleVectorsOff ( )
virtual

TODO

◆ SetComputeGeodesicDistance()

virtual void vtkvmtkPolyDataLocalGeometry::SetComputeGeodesicDistance ( int  )
virtual

Turn on/off the computation of geodesic distance to centerlines.

◆ GetComputeGeodesicDistance()

virtual int vtkvmtkPolyDataLocalGeometry::GetComputeGeodesicDistance ( )
virtual

Turn on/off the computation of geodesic distance to centerlines.

◆ ComputeGeodesicDistanceOn()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeGeodesicDistanceOn ( )
virtual

Turn on/off the computation of geodesic distance to centerlines.

◆ ComputeGeodesicDistanceOff()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeGeodesicDistanceOff ( )
virtual

Turn on/off the computation of geodesic distance to centerlines.

◆ SetGeodesicDistanceArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetGeodesicDistanceArrayName ( const char *  )
virtual

Set/Get the name of the point data array where geodesic distance to centerlines is stored after execution.

◆ GetGeodesicDistanceArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetGeodesicDistanceArrayName ( )
virtual

Set/Get the name of the point data array where geodesic distance to centerlines is stored after execution.

◆ SetComputeNormalizedTangencyDeviation()

virtual void vtkvmtkPolyDataLocalGeometry::SetComputeNormalizedTangencyDeviation ( int  )
virtual

Turn on/off the computation of normalized tangency deviation.

◆ GetComputeNormalizedTangencyDeviation()

virtual int vtkvmtkPolyDataLocalGeometry::GetComputeNormalizedTangencyDeviation ( )
virtual

Turn on/off the computation of normalized tangency deviation.

◆ ComputeNormalizedTangencyDeviationOn()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeNormalizedTangencyDeviationOn ( )
virtual

Turn on/off the computation of normalized tangency deviation.

◆ ComputeNormalizedTangencyDeviationOff()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeNormalizedTangencyDeviationOff ( )
virtual

Turn on/off the computation of normalized tangency deviation.

◆ SetNormalizedTangencyDeviationArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetNormalizedTangencyDeviationArrayName ( const char *  )
virtual

Set/Get the name of the point data array where normalized tangency deviation is stored after execution.

◆ GetNormalizedTangencyDeviationArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetNormalizedTangencyDeviationArrayName ( )
virtual

Set/Get the name of the point data array where normalized tangency deviation is stored after execution.

◆ SetComputeEuclideanDistance()

virtual void vtkvmtkPolyDataLocalGeometry::SetComputeEuclideanDistance ( int  )
virtual

TODO

◆ GetComputeEuclideanDistance()

virtual int vtkvmtkPolyDataLocalGeometry::GetComputeEuclideanDistance ( )
virtual

TODO

◆ ComputeEuclideanDistanceOn()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeEuclideanDistanceOn ( )
virtual

TODO

◆ ComputeEuclideanDistanceOff()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeEuclideanDistanceOff ( )
virtual

TODO

◆ SetEuclideanDistanceArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetEuclideanDistanceArrayName ( const char *  )
virtual

TODO

◆ GetEuclideanDistanceArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetEuclideanDistanceArrayName ( )
virtual

TODO

◆ SetComputeCenterlineVectors()

virtual void vtkvmtkPolyDataLocalGeometry::SetComputeCenterlineVectors ( int  )
virtual

TODO

◆ GetComputeCenterlineVectors()

virtual int vtkvmtkPolyDataLocalGeometry::GetComputeCenterlineVectors ( )
virtual

TODO

◆ ComputeCenterlineVectorsOn()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeCenterlineVectorsOn ( )
virtual

TODO

◆ ComputeCenterlineVectorsOff()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeCenterlineVectorsOff ( )
virtual

TODO

◆ SetCenterlineVectorsArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetCenterlineVectorsArrayName ( const char *  )
virtual

TODO

◆ GetCenterlineVectorsArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetCenterlineVectorsArrayName ( )
virtual

TODO

◆ SetComputeCellIds()

virtual void vtkvmtkPolyDataLocalGeometry::SetComputeCellIds ( int  )
virtual

TODO

◆ GetComputeCellIds()

virtual int vtkvmtkPolyDataLocalGeometry::GetComputeCellIds ( )
virtual

TODO

◆ ComputeCellIdsOn()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeCellIdsOn ( )
virtual

TODO

◆ ComputeCellIdsOff()

virtual void vtkvmtkPolyDataLocalGeometry::ComputeCellIdsOff ( )
virtual

TODO

◆ SetCellIdsArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetCellIdsArrayName ( const char *  )
virtual

TODO

◆ GetCellIdsArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetCellIdsArrayName ( )
virtual

TODO

◆ SetComputePCoords()

virtual void vtkvmtkPolyDataLocalGeometry::SetComputePCoords ( int  )
virtual

TODO

◆ GetComputePCoords()

virtual int vtkvmtkPolyDataLocalGeometry::GetComputePCoords ( )
virtual

TODO

◆ ComputePCoordsOn()

virtual void vtkvmtkPolyDataLocalGeometry::ComputePCoordsOn ( )
virtual

TODO

◆ ComputePCoordsOff()

virtual void vtkvmtkPolyDataLocalGeometry::ComputePCoordsOff ( )
virtual

TODO

◆ SetAdjustBoundaryValues()

virtual void vtkvmtkPolyDataLocalGeometry::SetAdjustBoundaryValues ( int  )
virtual

◆ GetAdjustBoundaryValues()

virtual int vtkvmtkPolyDataLocalGeometry::GetAdjustBoundaryValues ( )
virtual

◆ AdjustBoundaryValuesOn()

virtual void vtkvmtkPolyDataLocalGeometry::AdjustBoundaryValuesOn ( )
virtual

◆ AdjustBoundaryValuesOff()

virtual void vtkvmtkPolyDataLocalGeometry::AdjustBoundaryValuesOff ( )
virtual

◆ SetPCoordsArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetPCoordsArrayName ( const char *  )
virtual

TODO

◆ GetPCoordsArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetPCoordsArrayName ( )
virtual

TODO

◆ SetVoronoiDiagram()

virtual void vtkvmtkPolyDataLocalGeometry::SetVoronoiDiagram ( vtkPolyData *  )
virtual

Set/Get the Voronoi diagram associated with the input.

◆ GetVoronoiDiagram()

virtual vtkPolyData* vtkvmtkPolyDataLocalGeometry::GetVoronoiDiagram ( )
virtual

Set/Get the Voronoi diagram associated with the input.

◆ SetVoronoiGeodesicDistanceArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetVoronoiGeodesicDistanceArrayName ( const char *  )
virtual

Set/Get the name of the Voronoi diagram point data array where geodesic distance to centerlines is stored.

◆ GetVoronoiGeodesicDistanceArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetVoronoiGeodesicDistanceArrayName ( )
virtual

Set/Get the name of the Voronoi diagram point data array where geodesic distance to centerlines is stored.

◆ SetVoronoiPoleCenterlineVectorsArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetVoronoiPoleCenterlineVectorsArrayName ( const char *  )
virtual

TODO.

◆ GetVoronoiPoleCenterlineVectorsArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetVoronoiPoleCenterlineVectorsArrayName ( )
virtual

TODO.

◆ SetVoronoiCellIdsArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetVoronoiCellIdsArrayName ( const char *  )
virtual

TODO.

◆ GetVoronoiCellIdsArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetVoronoiCellIdsArrayName ( )
virtual

TODO.

◆ SetVoronoiPCoordsArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetVoronoiPCoordsArrayName ( const char *  )
virtual

TODO.

◆ GetVoronoiPCoordsArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetVoronoiPCoordsArrayName ( )
virtual

TODO.

◆ SetPoleIds()

virtual void vtkvmtkPolyDataLocalGeometry::SetPoleIds ( vtkIdList *  )
virtual

Set/Get the id list of the Voronoi diagram points which are the poles of surface points.

◆ GetPoleIds()

virtual vtkIdList* vtkvmtkPolyDataLocalGeometry::GetPoleIds ( )
virtual

Set/Get the id list of the Voronoi diagram points which are the poles of surface points.

◆ SetPoleVectorsArrayName()

virtual void vtkvmtkPolyDataLocalGeometry::SetPoleVectorsArrayName ( const char *  )
virtual

TODO

◆ GetPoleVectorsArrayName()

virtual char* vtkvmtkPolyDataLocalGeometry::GetPoleVectorsArrayName ( )
virtual

TODO

◆ RequestData()

virtual int vtkvmtkPolyDataLocalGeometry::RequestData ( vtkInformation *  ,
vtkInformationVector **  ,
vtkInformationVector *   
)
protectedvirtual

◆ AdjustBoundaryQuantities()

void vtkvmtkPolyDataLocalGeometry::AdjustBoundaryQuantities ( vtkPolyData *  output)
protected

Member Data Documentation

◆ ComputePoleVectors

int vtkvmtkPolyDataLocalGeometry::ComputePoleVectors
protected

Definition at line 201 of file vtkvmtkPolyDataLocalGeometry.h.

◆ ComputeGeodesicDistance

int vtkvmtkPolyDataLocalGeometry::ComputeGeodesicDistance
protected

Definition at line 202 of file vtkvmtkPolyDataLocalGeometry.h.

◆ ComputeNormalizedTangencyDeviation

int vtkvmtkPolyDataLocalGeometry::ComputeNormalizedTangencyDeviation
protected

Definition at line 203 of file vtkvmtkPolyDataLocalGeometry.h.

◆ ComputeEuclideanDistance

int vtkvmtkPolyDataLocalGeometry::ComputeEuclideanDistance
protected

Definition at line 204 of file vtkvmtkPolyDataLocalGeometry.h.

◆ ComputeCenterlineVectors

int vtkvmtkPolyDataLocalGeometry::ComputeCenterlineVectors
protected

Definition at line 205 of file vtkvmtkPolyDataLocalGeometry.h.

◆ ComputeCellIds

int vtkvmtkPolyDataLocalGeometry::ComputeCellIds
protected

Definition at line 206 of file vtkvmtkPolyDataLocalGeometry.h.

◆ ComputePCoords

int vtkvmtkPolyDataLocalGeometry::ComputePCoords
protected

Definition at line 207 of file vtkvmtkPolyDataLocalGeometry.h.

◆ AdjustBoundaryValues

int vtkvmtkPolyDataLocalGeometry::AdjustBoundaryValues
protected

Definition at line 209 of file vtkvmtkPolyDataLocalGeometry.h.

◆ PoleVectorsArrayName

char* vtkvmtkPolyDataLocalGeometry::PoleVectorsArrayName
protected

Definition at line 211 of file vtkvmtkPolyDataLocalGeometry.h.

◆ GeodesicDistanceArrayName

char* vtkvmtkPolyDataLocalGeometry::GeodesicDistanceArrayName
protected

Definition at line 212 of file vtkvmtkPolyDataLocalGeometry.h.

◆ NormalizedTangencyDeviationArrayName

char* vtkvmtkPolyDataLocalGeometry::NormalizedTangencyDeviationArrayName
protected

Definition at line 213 of file vtkvmtkPolyDataLocalGeometry.h.

◆ EuclideanDistanceArrayName

char* vtkvmtkPolyDataLocalGeometry::EuclideanDistanceArrayName
protected

Definition at line 214 of file vtkvmtkPolyDataLocalGeometry.h.

◆ CenterlineVectorsArrayName

char* vtkvmtkPolyDataLocalGeometry::CenterlineVectorsArrayName
protected

Definition at line 215 of file vtkvmtkPolyDataLocalGeometry.h.

◆ CellIdsArrayName

char* vtkvmtkPolyDataLocalGeometry::CellIdsArrayName
protected

Definition at line 216 of file vtkvmtkPolyDataLocalGeometry.h.

◆ PCoordsArrayName

char* vtkvmtkPolyDataLocalGeometry::PCoordsArrayName
protected

Definition at line 217 of file vtkvmtkPolyDataLocalGeometry.h.

◆ VoronoiGeodesicDistanceArrayName

char* vtkvmtkPolyDataLocalGeometry::VoronoiGeodesicDistanceArrayName
protected

Definition at line 219 of file vtkvmtkPolyDataLocalGeometry.h.

◆ VoronoiPoleCenterlineVectorsArrayName

char* vtkvmtkPolyDataLocalGeometry::VoronoiPoleCenterlineVectorsArrayName
protected

Definition at line 220 of file vtkvmtkPolyDataLocalGeometry.h.

◆ VoronoiCellIdsArrayName

char* vtkvmtkPolyDataLocalGeometry::VoronoiCellIdsArrayName
protected

Definition at line 221 of file vtkvmtkPolyDataLocalGeometry.h.

◆ VoronoiPCoordsArrayName

char* vtkvmtkPolyDataLocalGeometry::VoronoiPCoordsArrayName
protected

Definition at line 222 of file vtkvmtkPolyDataLocalGeometry.h.

◆ VoronoiDiagram

vtkPolyData* vtkvmtkPolyDataLocalGeometry::VoronoiDiagram
protected

Definition at line 223 of file vtkvmtkPolyDataLocalGeometry.h.

◆ PoleIds

vtkIdList* vtkvmtkPolyDataLocalGeometry::PoleIds
protected

Definition at line 224 of file vtkvmtkPolyDataLocalGeometry.h.


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