UNPKG

@mkerkstra/jsts-cjs

Version:

A CommonJS fork of JSTS: A JavaScript library of spatial predicates and functions for processing geometry

24 lines (23 loc) 886 B
import SimilarityMeasure from './SimilarityMeasure.js' import Envelope from '../../geom/Envelope.js' import DiscreteHausdorffDistance from '../distance/DiscreteHausdorffDistance.js' export default class HausdorffSimilarityMeasure { static diagonalSize(env) { if (env.isNull()) return 0.0 const width = env.getWidth() const hgt = env.getHeight() return Math.sqrt(width * width + hgt * hgt) } measure(g1, g2) { const distance = DiscreteHausdorffDistance.distance(g1, g2, HausdorffSimilarityMeasure.DENSIFY_FRACTION) const env = new Envelope(g1.getEnvelopeInternal()) env.expandToInclude(g2.getEnvelopeInternal()) const envSize = HausdorffSimilarityMeasure.diagonalSize(env) const measure = 1 - distance / envSize return measure } get interfaces_() { return [SimilarityMeasure] } } HausdorffSimilarityMeasure.DENSIFY_FRACTION = 0.25