VTK
vtkDijkstraGraphGeodesicPath.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDijkstraGraphGeodesicPath.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
38 #ifndef vtkDijkstraGraphGeodesicPath_h
39 #define vtkDijkstraGraphGeodesicPath_h
40 
41 #include "vtkFiltersModelingModule.h" // For export macro
42 #include "vtkGraphGeodesicPath.h"
43 
45 class vtkIdList;
46 
47 class VTKFILTERSMODELING_EXPORT vtkDijkstraGraphGeodesicPath :
49 {
50 public:
51 
56 
58 
62  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
64 
66 
69  vtkGetObjectMacro(IdList, vtkIdList);
71 
73 
77  vtkSetMacro(StopWhenEndReached, int);
78  vtkGetMacro(StopWhenEndReached, int);
79  vtkBooleanMacro(StopWhenEndReached, int);
81 
83 
86  vtkSetMacro(UseScalarWeights, int);
87  vtkGetMacro(UseScalarWeights, int);
88  vtkBooleanMacro(UseScalarWeights, int);
90 
92 
95  vtkSetMacro(RepelPathFromVertices, int);
96  vtkGetMacro(RepelPathFromVertices, int);
97  vtkBooleanMacro(RepelPathFromVertices, int);
99 
101 
104  virtual void SetRepelVertices(vtkPoints*);
105  vtkGetObjectMacro(RepelVertices, vtkPoints);
107 
111  virtual void GetCumulativeWeights(vtkDoubleArray *weights);
112 
113 protected:
115  ~vtkDijkstraGraphGeodesicPath() VTK_OVERRIDE;
116 
117  int RequestData(vtkInformation *, vtkInformationVector **,
118  vtkInformationVector *) VTK_OVERRIDE;
119 
120  // Build a graph description of the input.
121  virtual void BuildAdjacency( vtkDataSet *inData );
122 
123  vtkTimeStamp AdjacencyBuildTime;
124 
125  // The fixed cost going from vertex u to v.
126  virtual double CalculateStaticEdgeCost( vtkDataSet *inData, vtkIdType u, vtkIdType v);
127 
128  // The cost going from vertex u to v that may depend on one or more vertices
129  //that precede u.
130  virtual double CalculateDynamicEdgeCost( vtkDataSet *, vtkIdType , vtkIdType )
131  { return 0.0; }
132 
133  void Initialize( vtkDataSet *inData );
134 
135  void Reset();
136 
137  // Calculate shortest path from vertex startv to vertex endv.
138  virtual void ShortestPath( vtkDataSet *inData, int startv, int endv );
139 
140  // Relax edge u,v with weight w.
141  void Relax(const int& u, const int& v, const double& w);
142 
143  // Backtrace the shortest path
144  void TraceShortestPath( vtkDataSet* inData, vtkPolyData* outPoly,
145  vtkIdType startv, vtkIdType endv);
146 
147  // The number of vertices.
149 
150  // The vertex ids on the shortest path.
152 
153  //Internalized STL containers.
155 
159 
161 
162 private:
164  void operator=(const vtkDijkstraGraphGeodesicPath&) VTK_DELETE_FUNCTION;
165 
166 };
167 
168 #endif
169 
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methids for printing and determining type information.
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
record modification and/or execution time
Definition: vtkTimeStamp.h:35
int vtkIdType
Definition: vtkType.h:345
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
Dijkstra algorithm to compute the graph geodesic.
dynamic, self-adjusting array of double
static vtkPolyDataAlgorithm * New()
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkDijkstraGraphInternals * Internals
Helper class due to PIMPL excess.
list of point or cell ids
Definition: vtkIdList.h:36
Abstract base for classes that generate a geodesic path on a graph (mesh).
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
Store zero or more vtkInformation instances.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
represent and manipulate 3D points
Definition: vtkPoints.h:39