throw new IllegalArgumentException("At least one point is required in the pointList."); } else if (size == 1) { return pointList.getEle(0); } else if (size == 2) { return calculateElevationBasedOnTwoPoints(lat, lon, pointList.getLat(0), pointList.getLon(0), pointList.getEle(0), pointList.getLat(1), pointList.getLon(1), pointList.getEle(1)); } else if (size == 3) { return calculateElevationBasedOnThreePoints(lat, lon, pointList.getLat(0), pointList.getLon(0), pointList.getEle(0), pointList.getLat(1), pointList.getLon(1), pointList.getEle(1), pointList.getLat(2), pointList.getLon(2), pointList.getEle(2)); } else { double[] vs = new double[size]; double dloni = loni - lon; double l2 = (dlati * dlati + dloni * dloni); eles[index] = pointList.getEle(index); if (l2 < EPSILON2) { return eles[index];
@Test public void interpolatesElevationOfPillarNodes() { PointList pl1 = new PointList(3, true); pl1.add(0, 0, 0); pl1.add(0.0005, 0.0005, 100); pl1.add(0.001, 0.001, 50); GraphElevationSmoothing.smoothElevation(pl1); assertEquals(3, pl1.size()); assertEquals(50, pl1.getElevation(1), .1); PointList pl2 = new PointList(3, true); pl2.add(0.001, 0.001, 50); pl2.add(0.0015, 0.0015, 160); pl2.add(0.0016, 0.0015, 150); pl2.add(0.0017, 0.0015, 220); pl2.add(0.002, 0.002, 20); GraphElevationSmoothing.smoothElevation(pl2); assertEquals(5, pl2.size()); assertEquals(120, pl2.getElevation(1), .1); // This is not 120 anymore, as the point at index 1 was smoothed from 160=>120 assertEquals(112, pl2.getElevation(2), .1); assertEquals(50, pl2.getEle(0), .1); }
private static List<Coordinate> toCoordinateArray(PointList pointList) { List<Coordinate> coordinates = new ArrayList<>(pointList.size()); for (int i = 0; i < pointList.size(); i++) { coordinates.add(pointList.getDimension() == 3 ? new Coordinate(pointList.getLon(i), pointList.getLat(i)) : new Coordinate(pointList.getLon(i), pointList.getLat(i), pointList.getEle(i))); } return coordinates; }
public double calcDistance(DistanceCalc calc) { double prevLat = Double.NaN; double prevLon = Double.NaN; double prevEle = Double.NaN; double dist = 0; for (int i = 0; i < size(); i++) { if (i > 0) { if (is3D()) dist += distCalc3D.calcDist(prevLat, prevLon, prevEle, getLat(i), getLon(i), getEle(i)); else dist += calc.calcDist(prevLat, prevLon, getLat(i), getLon(i)); } prevLat = getLat(i); prevLon = getLon(i); if (is3D()) prevEle = getEle(i); } return dist; }
sum += geometry.getEle(j);
assertEquals(10, edge17PointList.getEle(0), PRECISION); assertEquals(12, edge17PointList.getEle(1), PRECISION); assertEquals(14, edge17PointList.getEle(2), PRECISION); assertEquals(16, edge17PointList.getEle(3), PRECISION); assertEquals(18, edge17PointList.getEle(4), PRECISION); assertEquals(20, edge17PointList.getEle(5), PRECISION);
throw new IllegalArgumentException("At least one point is required in the pointList."); } else if (size == 1) { return pointList.getEle(0); } else if (size == 2) { return calculateElevationBasedOnTwoPoints(lat, lon, pointList.getLat(0), pointList.getLon(0), pointList.getEle(0), pointList.getLat(1), pointList.getLon(1), pointList.getEle(1)); } else if (size == 3) { return calculateElevationBasedOnThreePoints(lat, lon, pointList.getLat(0), pointList.getLon(0), pointList.getEle(0), pointList.getLat(1), pointList.getLon(1), pointList.getEle(1), pointList.getLat(2), pointList.getLon(2), pointList.getEle(2)); } else { double[] vs = new double[size]; double dloni = loni - lon; double l2 = (dlati * dlati + dloni * dloni); eles[index] = pointList.getEle(index); if (l2 < EPSILON2) { return eles[index];
throw new IllegalArgumentException("At least one point is required in the pointList."); } else if (size == 1) { return pointList.getEle(0); } else if (size == 2) { return calculateElevationBasedOnTwoPoints(lat, lon, pointList.getLat(0), pointList.getLon(0), pointList.getEle(0), pointList.getLat(1), pointList.getLon(1), pointList.getEle(1)); } else if (size == 3) { return calculateElevationBasedOnThreePoints(lat, lon, pointList.getLat(0), pointList.getLon(0), pointList.getEle(0), pointList.getLat(1), pointList.getLon(1), pointList.getEle(1), pointList.getLat(2), pointList.getLon(2), pointList.getEle(2)); } else { double[] vs = new double[size]; double dloni = loni - lon; double l2 = (dlati * dlati + dloni * dloni); eles[index] = pointList.getEle(index); if (l2 < EPSILON2) { return eles[index];
public double calcDistance(DistanceCalc calc) { double prevLat = Double.NaN; double prevLon = Double.NaN; double prevEle = Double.NaN; double dist = 0; for (int i = 0; i < size(); i++) { if (i > 0) { if (is3D()) dist += distCalc3D.calcDist(prevLat, prevLon, prevEle, getLat(i), getLon(i), getEle(i)); else dist += calc.calcDist(prevLat, prevLon, getLat(i), getLon(i)); } prevLat = getLat(i); prevLon = getLon(i); if (is3D()) prevEle = getEle(i); } return dist; }
/** * Calculates the bounding box of this route response */ public BBox calcRouteBBox(BBox _fallback) { check("calcRouteBBox"); BBox bounds = BBox.createInverse(_fallback.hasElevation()); int len = pointList.getSize(); if (len == 0) return _fallback; for (int i = 0; i < len; i++) { double lat = pointList.getLatitude(i); double lon = pointList.getLongitude(i); if (bounds.hasElevation()) { double ele = pointList.getEle(i); bounds.update(lat, lon, ele); } else { bounds.update(lat, lon); } } return bounds; }
/** * Calculates the bounding box of this route response */ public BBox calcRouteBBox( BBox _fallback ) { check("calcRouteBBox"); BBox bounds = BBox.createInverse(_fallback.hasElevation()); int len = pointList.getSize(); if (len == 0) return _fallback; for (int i = 0; i < len; i++) { double lat = pointList.getLatitude(i); double lon = pointList.getLongitude(i); if (bounds.hasElevation()) { double ele = pointList.getEle(i); bounds.update(lat, lon, ele); } else { bounds.update(lat, lon); } } return bounds; }
sum += geometry.getEle(j);