4 #ifndef __VTK__VTK__DIJKSTRA__IMAGE__DATA__H
5 #define __VTK__VTK__DIJKSTRA__IMAGE__DATA__H
7 #include "vtkPolyDataSource.h"
8 #include "vtkImageData.h"
10 #include "vtkCellArray.h"
11 #include "vtkPolyData.h"
16 class vtkPriorityQueue;
18 class vtkDijkstraImageData : public vtkPolyDataSource
21 static vtkDijkstraImageData *New();
22 vtkTypeMacro(vtkDijkstraImageData,vtkPolyDataSource);
23 void PrintSelf(ostream& os, vtkIndent indent);
25 vtkSetMacro(SourceID,int);
26 vtkGetMacro(SourceID,int);
29 vtkSetMacro(SinkID,int);
30 vtkGetMacro(SinkID,int);
32 vtkGetObjectMacro(Parent,vtkIntArray);
36 virtual void SetBoundaryScalars(vtkDataArray*);
37 vtkGetObjectMacro(BoundaryScalars,vtkDataArray);
40 vtkSetMacro(NumberOfInputPoints,int);
41 vtkGetMacro(NumberOfInputPoints,int);
44 vtkSetMacro(NumberOfGraphNodes,int);
45 vtkGetMacro(NumberOfGraphNodes,int);
48 vtkIdList* GetShortestPathIdList();
51 vtkSetMacro(UseInverseDistance,int);
52 vtkGetMacro(UseInverseDistance,int);
55 vtkSetMacro(UseInverseSquaredDistance,int);
56 vtkGetMacro(UseInverseSquaredDistance,int);
59 vtkSetMacro(UseInverseExponentialDistance,int);
60 vtkGetMacro(UseInverseExponentialDistance,int);
62 vtkSetMacro(UseSquaredDistance,int);
63 vtkGetMacro(UseSquaredDistance,int);
67 unsigned long GetMTime();
70 void InitTraversePath();
71 int GetNextPathNode();
72 int GetNumberOfPathNodes();
75 void SetInput(vtkImageData*);
76 vtkImageData* GetInput();
79 void CreateGraph(vtkImageData *inData);
81 void FindNeighbors(vtkIdList *list,int id, vtkDataArray *scalars);
83 int findClosestPointInGraph(vtkDataArray *scalars,int id,int dim0,int dim1, int dim2);
88 void InitSingleSource(int startv);
90 void RunDijkstra(vtkDataArray *scalars,int source, int sink);
92 float EdgeCost(vtkDataArray *scalars, int u, int v);
93 void BuildShortestPath(int start,int end);
104 vtkDataArray *BoundaryScalars;
107 int NumberOfInputPoints;
108 int NumberOfGraphNodes;
110 int UseInverseDistance;
111 int UseInverseSquaredDistance;
112 int UseInverseExponentialDistance;
113 int UseSquaredDistance;
117 vtkPriorityQueue *PQ;
120 vtkIdList *ShortestPathIdList;
124 vtkIntArray *Visited;
129 int StopWhenEndReached;
133 vtkCellArray *lineas;
138 void init(vtkImageData *inData);
140 void printPointData(int pointID);
142 float fuerzaAtraccion(int u, float w);
146 vtkDijkstraImageData();
147 ~vtkDijkstraImageData();
154 // vtkDijstraImageData(const vtkDijkstraImageData&);
155 void operator=(const vtkDijkstraImageData&);
158 #endif //__VTK__VTK__DIJKSTRA__IMAGE__DATA__H