73 #ifndef vtkm_worklet_contourtree_governing_saddle_finder_h
74 #define vtkm_worklet_contourtree_governing_saddle_finder_h
90 WholeArrayIn edgeSorter,
92 WholeArrayIn edgeNear,
93 WholeArrayOut prunesTo,
94 WholeArrayOut outdegree);
102 template <
typename InFieldPortalType,
typename OutFieldPortalType>
104 const InFieldPortalType& edgeSorter,
105 const InFieldPortalType& edgeFar,
106 const InFieldPortalType& edgeNear,
107 const OutFieldPortalType& prunesTo,
108 const OutFieldPortalType& outdegree)
const
111 bool isBestSaddleEdge =
true;
114 vtkm::Id edge = edgeSorter.Get(edgeNo);
120 vtkm::Id prevEdge = edgeSorter.Get(edgeNo - 1);
122 if (edgeFar.Get(prevEdge) == edgeFar.Get(edge))
123 isBestSaddleEdge =
false;
126 if (isBestSaddleEdge)
129 vtkm::Id saddle = edgeNear.Get(edge);
131 vtkm::Id extreme = edgeFar.Get(edge);
134 prunesTo.Set(extreme, saddle);
137 outdegree.Set(extreme, 0);