91class GEOS_DLL DiscreteHausdorffDistance {
123 return ptDist.getDistance();
129 computeOrientedDistance(g0, g1, ptDist);
130 return ptDist.getDistance();
133 const std::array<geom::CoordinateXY, 2>
134 getCoordinates()
const
136 return ptDist.getCoordinates();
147 filter_ro(
const geom::CoordinateXY* pt)
override;
149 const PointPairDistance&
150 getMaxPointDistance()
const
156 PointPairDistance maxPtDist;
157 PointPairDistance minPtDist;
158 DistanceToPoint euclideanDist;
159 const geom::Geometry& geom;
162 MaxPointDistanceFilter(
const MaxPointDistanceFilter& other);
163 MaxPointDistanceFilter& operator=(
const MaxPointDistanceFilter& rhs);
166 class MaxDensifiedByFractionDistanceFilter
167 :
public geom::CoordinateSequenceFilter {
170 MaxDensifiedByFractionDistanceFilter(
171 const geom::Geometry& p_geom,
double fraction)
175 numSubSegs(std::size_t(util::
round(1.0 / fraction)))
179 void filter_ro(
const geom::CoordinateSequence& seq,
180 std::size_t index)
override;
183 isGeometryChanged()
const override
189 isDone()
const override
194 const PointPairDistance&
195 getMaxPointDistance()
const
201 PointPairDistance maxPtDist;
202 PointPairDistance minPtDist;
203 const geom::Geometry& geom;
204 std::size_t numSubSegs;
207 MaxDensifiedByFractionDistanceFilter(
const MaxDensifiedByFractionDistanceFilter& other);
208 MaxDensifiedByFractionDistanceFilter& operator=(
const MaxDensifiedByFractionDistanceFilter& rhs);
214 compute(
const geom::Geometry& p_g0,
215 const geom::Geometry& p_g1)
217 computeOrientedDistance(p_g0, p_g1, ptDist);
218 computeOrientedDistance(p_g1, p_g0, ptDist);
221 void computeOrientedDistance(
const geom::Geometry& discreteGeom,
222 const geom::Geometry& geom,
223 PointPairDistance& ptDist);
225 const geom::Geometry& g0;
227 const geom::Geometry& g1;
229 PointPairDistance ptDist;
235 DiscreteHausdorffDistance(
const DiscreteHausdorffDistance& other) =
delete;
236 DiscreteHausdorffDistance& operator=(
const DiscreteHausdorffDistance& rhs) =
delete;