diff options
Diffstat (limited to 'geom_bottleneck/include/bottleneck_detail.h')
-rw-r--r-- | geom_bottleneck/include/bottleneck_detail.h | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/geom_bottleneck/include/bottleneck_detail.h b/geom_bottleneck/include/bottleneck_detail.h index 27c3c5d..7241c9a 100644 --- a/geom_bottleneck/include/bottleneck_detail.h +++ b/geom_bottleneck/include/bottleneck_detail.h @@ -43,39 +43,44 @@ derivative works thereof, in binary and source code form. namespace hera { -namespace bt { - - - -// functions taking DiagramPointSet as input. -// ATTENTION: parameters A and B (diagrams) will be changed after the call -// (projections added). - -// return the interval (distMin, distMax) such that: -// a) actual bottleneck distance between A and B is contained in the interval -// b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon -template<class Real> -std::pair<Real, Real> bottleneckDistApproxInterval(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon); - - -// heuristic (sample diagram to estimate the distance) -template<class Real> -std::pair<Real, Real> bottleneckDistApproxIntervalHeur(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon); - -// get approximate distance, -// see bottleneckDistApproxInterval -template<class Real> -Real bottleneckDistApprox(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon); - -// get exact bottleneck distance, -template<class Real> -Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const int decPrecision); - -// get exact bottleneck distance, -template<class Real> -Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B); - -} // end namespace bt + namespace bt { + + // functions taking DiagramPointSet as input. + // ATTENTION: parameters A and B (diagrams) will be changed after the call + // (projections added). + + // return the interval (distMin, distMax) such that: + // a) actual bottleneck distance between A and B is contained in the interval + // b) if the interval is not (0,0), then (distMax - distMin) / distMin < epsilon + template<class Real> + std::pair<Real, Real> bottleneckDistApproxInterval(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, + const Real epsilon, MatchingEdge<Real>& longest_edge, + bool compute_longest_edge = false); + + + // heuristic (sample diagram to estimate the distance) + template<class Real> + std::pair<Real, Real> + bottleneckDistApproxIntervalHeur(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon, + bool compute_longest_edge = false); + + // get approximate distance, + // see bottleneckDistApproxInterval + template<class Real> + Real bottleneckDistApprox(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const Real epsilon, + MatchingEdge<Real>& longest_edge, bool compute_longest_edge = false); + + // get exact bottleneck distance, + template<class Real> + Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, const int decPrecision, + MatchingEdge<Real>& longest_edge, bool compute_longest_edge = false); + + // get exact bottleneck distance, + template<class Real> + Real bottleneckDistExact(DiagramPointSet<Real>& A, DiagramPointSet<Real>& B, MatchingEdge<Real>& longest_edge, + bool compute_longest_edge = false); + + } // end namespace bt } // end namespace hera |