@@ -666,6 +666,7 @@ public void testGreatCircleAzimuth_West() throws Exception {
666666 *
667667 * @throws Exception
668668 */
669+ @ Ignore ("NaN behavior TBD" )
669670 @ Test
670671 public void testGreatCircleAzimuth_WithNaN () throws Exception {
671672 Location origin = new Location (THETA , PHI );
@@ -808,6 +809,7 @@ public void testGreatCircleDistance_WithNull() throws Exception {
808809 *
809810 * @throws Exception
810811 */
812+ @ Ignore ("NaN behavior TBD" )
811813 @ Test
812814 public void testGreatCircleDistance_WithNaN () throws Exception {
813815 Location location = new Location (Double .NaN , Double .NaN );
@@ -953,6 +955,7 @@ public void testRhumbAzimuth_CoincidentLocations() throws Exception {
953955 *
954956 * @throws Exception
955957 */
958+ @ Ignore ("NaN behavior TBD" )
956959 @ Test
957960 public void testRhumbAzimuth_WithNaN () throws Exception {
958961 Location begin = new Location (Double .NaN , Double .NaN );
@@ -1019,6 +1022,7 @@ public void testRhumbDistance_AcrossDateline() throws Exception {
10191022 *
10201023 * @throws Exception
10211024 */
1025+ @ Ignore ("NaN behavior TBD" )
10221026 @ Test
10231027 public void testRhumbDistance_WithNaN () throws Exception {
10241028 Location begin = new Location (Double .NaN , Double .NaN );
@@ -1088,6 +1092,7 @@ public void testRhumbLocation() throws Exception {
10881092 *
10891093 * @throws Exception
10901094 */
1095+ @ Ignore ("NaN behavior TBD" )
10911096 @ Test
10921097 public void testRhumbLocation_WithNaN () throws Exception {
10931098 Location begin1 = Location .fromRadians (0.592539 , -2.066470 ); // LAX
@@ -1147,6 +1152,7 @@ public void testLinearAzimuth_AcrossDateline() throws Exception {
11471152 *
11481153 * @throws Exception
11491154 */
1155+ @ Ignore ("NaN behavior TBD" )
11501156 @ Test
11511157 public void testLinearAzimuth_WithNaN () throws Exception {
11521158 Location begin = new Location (Double .NaN , Double .NaN );
@@ -1174,6 +1180,7 @@ public void testLinearDistance() throws Exception {
11741180 *
11751181 * @throws Exception
11761182 */
1183+ @ Ignore ("NaN behavior TBD" )
11771184 @ Test
11781185 public void testLinearDistance_WithNaN () throws Exception {
11791186 Location begin = new Location (Double .NaN , Double .NaN );
@@ -1208,6 +1215,7 @@ public void testLinearLocation() throws Exception {
12081215 *
12091216 * @throws Exception
12101217 */
1218+ @ Ignore ("NaN behavior TBD" )
12111219 @ Test
12121220 public void testLinearLocation_WithNaN () throws Exception {
12131221 Location begin1 = Location .fromRadians (0.592539 , -2.066470 ); // LAX
@@ -1352,4 +1360,51 @@ public void testGreatCircleDistance_ProblemPointsA() {
13521360 assertEquals ("Problem points A" , 0.8090134466773318 , distance , TOLERANCE );
13531361 }
13541362
1363+ @ Test
1364+ public void testRhumbLocation_ProblemPointsA () {
1365+ // Compute location along/near equator
1366+ double azimuth = 90.0 ;
1367+ double distance = 0.08472006153859046 ;
1368+ Location begin = Location .fromDegrees (2.892251645338908 , -100.43740218868658 );
1369+ Location end = begin .rhumbLocation (azimuth , distance , new Location ());
1370+
1371+ // delta longitude
1372+ double result = end .longitude - begin .longitude ;
1373+ double expected = 4.860293056378467 ;
1374+
1375+ assertEquals ("Delta Longitude" , expected , result , 1e-15 );
1376+
1377+ // // This loop was used to test and identify the tolerance used in rhumbLocation.
1378+ // double startLat = 2.892251645338908;
1379+ // double latitude = startLat;
1380+ // double longitude = -100.0;
1381+ // double distance = 0.08472006153859046;
1382+ // double azimuth = 90.0;
1383+ // Location begin = new Location();
1384+ // Location end = new Location();
1385+ //
1386+ // while (latitude > startLat - 1e-16) {
1387+ // begin.set(latitude, longitude);
1388+ // begin.rhumbLocation(azimuth, distance, end);
1389+ // double dLon = end.longitude - begin.longitude;
1390+ //
1391+ // assertTrue("Delta Longitude @ [" + latitude + "] (" + dLon + ") < 10", dLon < 10);
1392+ //
1393+ // latitude -= 1e-18;
1394+ // }
1395+ }
1396+
1397+ @ Test
1398+ public void testRhumbDistance_ProblemPointsA () {
1399+ // Compute location along/near equator
1400+ Location begin = Location .fromDegrees (2.892251645338908 , -100.43740218868658 );
1401+ Location end = Location .fromDegrees (2.892251645338908 + 1e-15 , -95.57710913230811 );
1402+
1403+ double result = begin .rhumbDistance (end );
1404+ double expected = 0.08472006153859046 ;
1405+
1406+ assertEquals ("Rhumb distance" , expected , result , 1e-15 );
1407+
1408+ }
1409+
13551410}
0 commit comments