@Override
    public double calcDist3D(double fromLat, double fromLon, double fromHeight,
                             double toLat, double toLon, double toHeight) {
        double eleDelta = hasElevationDiff(fromHeight, toHeight) ? (toHeight - fromHeight) : 0;
        double len = calcDist(fromLat, fromLon, toLat, toLon);
        return Math.sqrt(eleDelta * eleDelta + len * len);
    }
@Test
    public void testDistance3dPlaneNaN() {
        DistancePlaneProjection distCalc = new DistancePlaneProjection();
        assertEquals(0, distCalc.calcDist3D(
                0, 0, 0,
                0, 0, Double.NaN
        ), 1e-6);
        assertEquals(0, distCalc.calcDist3D(
                0, 0, Double.NaN,
                0, 0, 10
        ), 1e-6);
        assertEquals(0, distCalc.calcDist3D(
                0, 0, Double.NaN,
                0, 0, Double.NaN
        ), 1e-6);
    }