/******************************************************************************* * Copyright (c) 2015 MITRE * All rights reserved. This program and the accompanying materials * are made available under the terms of the Apache License, Version 2.0 which * accompanies this distribution and is available at * http://www.apache.org/licenses/LICENSE-2.0.txt ******************************************************************************/ package org.locationtech.spatial4j.shape; import org.locationtech.spatial4j.context.SpatialContext; import org.locationtech.spatial4j.distance.AbstractDistanceCalculator; import org.locationtech.spatial4j.distance.DistanceCalculator; /** Ameliorates some random tests cases in which shapes barely tough or barely not * touch. */ class RoundingDistCalc extends AbstractDistanceCalculator { DistanceCalculator delegate; RoundingDistCalc(DistanceCalculator delegate) { this.delegate = delegate; } double round(double val) { final double scale = Math.pow(10,10/*digits precision*/); return Math.round(val * scale) / scale; } @Override public double distance(Point from, double toX, double toY) { return round(delegate.distance(from, toX, toY)); } @Override public Point pointOnBearing(Point from, double distDEG, double bearingDEG, SpatialContext ctx, Point reuse) { return delegate.pointOnBearing(from, distDEG, bearingDEG, ctx, reuse); } @Override public Rectangle calcBoxByDistFromPt(Point from, double distDEG, SpatialContext ctx, Rectangle reuse) { return delegate.calcBoxByDistFromPt(from, distDEG, ctx, reuse); } @Override public double calcBoxByDistFromPt_yHorizAxisDEG(Point from, double distDEG, SpatialContext ctx) { return delegate.calcBoxByDistFromPt_yHorizAxisDEG(from, distDEG, ctx); } @Override public double area(Rectangle rect) { return delegate.area(rect); } @Override public double area(Circle circle) { return delegate.area(circle); } }