if (Double.isNaN(cos2SigmaM)) cos2SigmaM = 0; is missing, so getDistance(0.0, 1.0, 0.0, 0.0) doesn't work...
is missing, so getDistance(0.0, 1.0, 0.0, 0.0) doesn't work...