diff --git a/CHANGES.md b/CHANGES.md index aca3a4803a7..e1972131ec6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # Change Log +### 1.79 - 2021-03-01 + +##### Fixes :wrench: + +- Fixed an issue where certain inputs to EllipsoidGeodesic would result in a surfaceDistance of NaN. [#9316](https://github.com/CesiumGS/cesium/pull/9316) + ### 1.78 - 2021-02-01 ##### Additions :tada: diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d9eaaa8ea83..9bbf8a03bca 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -283,3 +283,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to Cesiu - [Victor Turansky](https://github.com/turansky) - [Will Jadkowski](https://github.com/willjad) - [Mac Clayton](https://github.com/mclayton7) +- [Ben Murphy](https://github.com/littlemurph) diff --git a/Source/Core/EllipsoidGeodesic.js b/Source/Core/EllipsoidGeodesic.js index 29272cf19e9..bc4720b9321 100644 --- a/Source/Core/EllipsoidGeodesic.js +++ b/Source/Core/EllipsoidGeodesic.js @@ -171,7 +171,7 @@ function vincentyInverseFormula( cosineTwiceSigmaMidpoint = cosineSigma - (2.0 * ss) / cosineSquaredAlpha; - if (isNaN(cosineTwiceSigmaMidpoint)) { + if (!isFinite(cosineTwiceSigmaMidpoint)) { cosineTwiceSigmaMidpoint = 0.0; } diff --git a/Specs/Core/EllipsoidGeodesicSpec.js b/Specs/Core/EllipsoidGeodesicSpec.js index 125b19f21fc..7fbdfc89ac8 100644 --- a/Specs/Core/EllipsoidGeodesicSpec.js +++ b/Specs/Core/EllipsoidGeodesicSpec.js @@ -121,6 +121,19 @@ describe("Core/EllipsoidGeodesic", function () { ); }); + it("computes distance very close to equator", function () { + // See https://github.com/CesiumGS/cesium/issues/9248 + + var ellipsoid = new Ellipsoid(6, 6, 3); + + var start = new Cartographic(-CesiumMath.EPSILON10, CesiumMath.EPSILON10); + + var end = new Cartographic(+CesiumMath.EPSILON10, CesiumMath.EPSILON10); + + var geodesic = new EllipsoidGeodesic(start, end, ellipsoid); + expect(geodesic.surfaceDistance).not.toBeNaN(); + }); + it("computes distance at meridian", function () { var ellipsoid = new Ellipsoid(6, 6, 6); var fifteenDegrees = Math.PI / 12;