/// <summary>
        /// Computes the Discrete Hausdorff Distance of two <see cref="IGeometry"/>s.
        /// </summary>
        /// <param name="g0">A geometry</param>
        /// <param name="g1">A geometry</param>
        /// <param name="densifyFraction">The densify fraction. A value of 0 indicates, that no densification should take place</param>
        /// <returns>The Discrete Hausdorff Distance</returns>
        public static double Distance(IGeometry g0, IGeometry g1, double densifyFraction)
        {
            var dist = new DiscreteHausdorffDistance(g0, g1);

            dist.DensifyFraction = densifyFraction;
            return(dist.Distance());
        }
 public static IGeometry densifiedDiscreteHausdorffDistanceLine(IGeometry a, IGeometry b, double frac)
 {
     var hausDist = new DiscreteHausdorffDistance(a, b);
     hausDist.DensifyFraction = frac;
     hausDist.Distance();
     return a.Factory.CreateLineString(hausDist.Coordinates);
 }
        /// <summary>
        /// Computes the Discrete Hausdorff Distance of two <see cref="IGeometry"/>s.
        /// </summary>
        /// <param name="g0">A geometry</param>
        /// <param name="g1">A geometry</param>
        /// <returns>The Discrete Hausdorff Distance</returns>
        public static double Distance(IGeometry g0, IGeometry g1)
        {
            var dist = new DiscreteHausdorffDistance(g0, g1);

            return(dist.Distance());
        }
 public static double discreteOrientedHausdorffDistance(IGeometry a, IGeometry b)
 {
     var dist = new DiscreteHausdorffDistance(a, b);
     return dist.OrientedDistance();
 }
 public static IGeometry discreteOrientedHausdorffDistanceLine(IGeometry a, IGeometry b)
 {
     var dist = new DiscreteHausdorffDistance(a, b);
     dist.OrientedDistance();
     return a.Factory.CreateLineString(dist.Coordinates);
 }
        ///<summary>
        /// Checks that the furthest distance from the buffer curve to the input
        /// is less than the given maximum distance.
        /// </summary>
        /// <remarks>
        /// This uses the Oriented Hausdorff distance metric. It corresponds to finding
        /// the point on the buffer curve which is furthest from <i>some</i> point on the input.
        /// </remarks>
        /// <param name="input">A geometry</param>
        /// <param name="bufCurve">A geometry</param>
        /// <param name="maxDist">The maximum distance that a buffer result can be from the input</param>
        private void CheckMaximumDistance(IGeometry input, IGeometry bufCurve, double maxDist)
        {
            //    BufferCurveMaximumDistanceFinder maxDistFinder = new BufferCurveMaximumDistanceFinder(input);
            //    maxDistanceFound = maxDistFinder.findDistance(bufCurve);

            var haus = new DiscreteHausdorffDistance(bufCurve, input);
            haus.DensifyFraction = 0.25;
            _maxDistanceFound = haus.OrientedDistance();

            if (_maxDistanceFound > maxDist)
            {
                _isValid = false;
                var pts = haus.Coordinates;
                _errorLocation = pts[1];
                _errorIndicator = input.Factory.CreateLineString(pts);
                _errMsg = "Distance between buffer curve and input is too large "
                  + "(" + _maxDistanceFound
                  + " at " + WKTWriter.ToLineString(pts[0], pts[1]) + ")";
            }
        }
 /// <summary>
 /// Computes the Discrete Hausdorff Distance of two <see cref="IGeometry"/>s.
 /// </summary>
 /// <param name="g0">A geometry</param>
 /// <param name="g1">A geometry</param>
 /// <param name="densifyFraction">The densify fraction. A value of 0 indicates, that no densification should take place</param>
 /// <returns>The Discrete Hausdorff Distance</returns>
 public static double Distance(IGeometry g0, IGeometry g1, double densifyFraction)
 {
     var dist = new DiscreteHausdorffDistance(g0, g1);
     dist.DensifyFraction = densifyFraction;
     return dist.Distance();
 }
 /// <summary>
 /// Computes the Discrete Hausdorff Distance of two <see cref="IGeometry"/>s.
 /// </summary>
 /// <param name="g0">A geometry</param>
 /// <param name="g1">A geometry</param>
 /// <returns>The Discrete Hausdorff Distance</returns>
 public static double Distance(IGeometry g0, IGeometry g1)
 {
     var dist = new DiscreteHausdorffDistance(g0, g1);
     return dist.Distance();
 }