@Test
 public void testKnownAzimuthE() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(53.0902505, -67.1064558);
   double azimuth = LatLon.greatCircleAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth E", -21.38356223882703, azimuth, THRESHOLD);
 }
 @Test
 public void testTrivialEquivalentPointsB() {
   LatLon begin = LatLon.fromDegrees(0.0, -180.0);
   LatLon end = LatLon.fromDegrees(0.0, 180.0);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Trivial equivalent points B", 0.0, distance, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthC() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(-12.0000001, 86.9999999);
   double azimuth = LatLon.greatCircleAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth C", -135.6329170237546, azimuth, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthD() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(11.9999999, -93.0000001);
   double azimuth = LatLon.greatCircleAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth D", 135.6329170162944, azimuth, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthB() {
   LatLon begin = LatLon.fromDegrees(53.0902505, 112.8935442);
   LatLon end = LatLon.fromDegrees(-53.0902505, -67.1064558);
   double azimuth = LatLon.greatCircleAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth B", -90.0, azimuth, THRESHOLD);
 }
 @Test
 public void testTrivialSouth() {
   LatLon begin = LatLon.fromDegrees(0.0, 0.0);
   LatLon end = LatLon.fromDegrees(-90.0, 0.0);
   double azimuth = LatLon.greatCircleAzimuth(begin, end).degrees;
   assertEquals("Trivial South greatCircleAzimuth", 180.0, azimuth, THRESHOLD);
 }
 @Test
 public void testProblemPointsA() {
   LatLon begin = LatLon.fromDegrees(36.0, -118.0);
   LatLon end = LatLon.fromDegrees(36.0, -117.0);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Problem points A", 0.8090134466773318, distance, THRESHOLD);
 }
 @Test
 public void testTrivialEquivalentPointsC() {
   LatLon begin = LatLon.fromDegrees(0.0, 0.0);
   LatLon end = LatLon.fromDegrees(0.0, 360.0);
   double distance = LatLon.rhumbDistance(begin, end).degrees;
   assertEquals("Trivial equivalent points C", 0.0, distance, THRESHOLD);
 }
 @Test
 public void testTrivialEquivalentPointsC() {
   LatLon begin = LatLon.fromDegrees(90.0, 0.0);
   LatLon end = LatLon.fromDegrees(90.0, 0.0);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Trivial equivalent points C", 0.0, azimuth, THRESHOLD);
 }
Exemple #10
0
    private Info[] buildSurfaceShapes() {
      LatLon position = new LatLon(Angle.fromDegrees(38), Angle.fromDegrees(-105));

      ArrayList<LatLon> surfaceLinePositions = new ArrayList<LatLon>();
      //            surfaceLinePositions.add(LatLon.fromDegrees(37.8484, -119.9754));
      //            surfaceLinePositions.add(LatLon.fromDegrees(38.3540, -119.1526));

      //            surfaceLinePositions.add(new LatLon(Angle.fromDegrees(0),
      // Angle.fromDegrees(-150)));
      //            surfaceLinePositions.add(new LatLon(Angle.fromDegrees(60),
      // Angle.fromDegrees(0)));

      surfaceLinePositions.add(position);
      surfaceLinePositions.add(LatLon.fromDegrees(39, -104));
      surfaceLinePositions.add(LatLon.fromDegrees(39, -105));
      surfaceLinePositions.add(position);

      return new Info[] {
        new Info("Circle", new SurfaceCircle(position, 100e3)),
        new Info("Ellipse", new SurfaceEllipse(position, 100e3, 90e3, Angle.ZERO)),
        new Info("Square", new SurfaceSquare(position, 100e3)),
        new Info("Quad", new SurfaceQuad(position, 100e3, 60e3, Angle.ZERO)),
        new Info("Sector", new SurfaceSector(Sector.fromDegrees(38, 40, -105, -103))),
        new Info("Polygon", new SurfacePolygon(surfaceLinePositions)),
      };
    }
 @Test
 public void testKnownAzimuthA() {
   LatLon begin = LatLon.fromDegrees(-90.0, -180.0);
   LatLon end = LatLon.fromDegrees(90.0, 180.0);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth A", 0.0, azimuth, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthB() {
   LatLon begin = LatLon.fromDegrees(53.0902505, 112.8935442);
   LatLon end = LatLon.fromDegrees(-53.0902505, -67.1064558);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth B", -124.94048502315054, azimuth, THRESHOLD);
 }
 @Test
 public void testKnownDistanceCloseTo180() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(11.9999999, -93.0000001);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Known spherical distance (close to 180)", 180.0, distance, THRESHOLD);
 }
 @Test
 public void testEquivalentPoints() {
   LatLon begin = LatLon.fromDegrees(53.0902505, 112.8935442);
   LatLon end = LatLon.fromDegrees(53.0902505, 112.8935442);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Equivalent points", 0.0, azimuth, THRESHOLD);
 }
 @Test
 public void testTrivialWest() {
   LatLon begin = LatLon.fromDegrees(0.0, 0.0);
   LatLon end = LatLon.fromDegrees(0.0, -90.0);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Trivial West rhumbAzimuth", -90.0, azimuth, THRESHOLD);
 }
 @Test
 public void testEquivalentPoints() {
   LatLon begin = LatLon.fromDegrees(53.0902505, 112.8935442);
   LatLon end = LatLon.fromDegrees(53.0902505, 112.8935442);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Equivalent points", 0.0, distance, THRESHOLD);
 }
 @Test
 public void testProblemPointsA() {
   LatLon begin = LatLon.fromDegrees(36.0, -118.0);
   LatLon end = LatLon.fromDegrees(36.0, -117.0);
   double distance = LatLon.rhumbDistance(begin, end).degrees;
   assertEquals("Problem points A", 0.8090169943749475, distance, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthC() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(-12.0000001, 86.9999999);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth C", -135.63291443992495, azimuth, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthD() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(11.9999999, -93.0000001);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth D", 82.34987931207793, azimuth, THRESHOLD);
 }
 @Test
 public void testKnownDistance() {
   LatLon begin = LatLon.fromDegrees(90.0, 45.0);
   LatLon end = LatLon.fromDegrees(36.0, 180.0);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Known spherical distance", 54.0, distance, THRESHOLD);
 }
 @Test
 public void testAntipodalPointsA() {
   LatLon begin = LatLon.fromDegrees(53.0902505, 112.8935442);
   LatLon end = LatLon.fromDegrees(-53.0902505, -67.1064558);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Antipodal points A", 180.0, distance, THRESHOLD);
 }
 @Test
 public void testAntipodalPointsB() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(12.0, -93.0);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Antipodal points B", 180.0, distance, THRESHOLD);
 }
 @Test
 public void testTrivialAntipodalPointsC() {
   LatLon begin = LatLon.fromDegrees(-90.0, -180.0);
   LatLon end = LatLon.fromDegrees(90.0, 180.0);
   double distance = LatLon.greatCircleDistance(begin, end).degrees;
   assertEquals("Trivial antipodal points C", 180.0, distance, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthE() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(53.0902505, -67.1064558);
   double azimuth = LatLon.rhumbAzimuth(begin, end).degrees;
   assertEquals("Known Azimuth E", -64.05846977747626, azimuth, THRESHOLD);
 }
 @Test
 public void testKnownDistance() {
   LatLon begin = LatLon.fromDegrees(90.0, 45.0);
   LatLon end = LatLon.fromDegrees(36.0, 180.0);
   double distance = LatLon.rhumbDistance(begin, end).degrees;
   assertEquals(
       "Known spherical distance", 54.11143196539475, distance, 1e-5); // Custom threshold
 }
 @Test
 public void testKnownDistanceCloseToZero() {
   LatLon begin = LatLon.fromDegrees(-12.0, 87.0);
   LatLon end = LatLon.fromDegrees(-12.0000001, 86.9999999);
   double distance = LatLon.rhumbDistance(begin, end).degrees;
   assertEquals(
       "Known spherical distance (close to zero)", 1.398846933590201e-7, distance, THRESHOLD);
 }
 @Test
 public void testKnownAzimuthC() {
   LatLon begin = LatLon.fromDegrees(-32.0000, 116.0000);
   LatLon end = LatLon.fromDegrees(23.0000, 122.0000);
   Angle theta =
       LatLon.ellipsoidalForwardAzimuth(
           begin, end, globe.getEquatorialRadius(), globe.getPolarRadius());
   assertEquals("Known ellipsoidal Azimuth C", 6.75777, theta.degrees, TOLERANCE);
 }
 @Test
 public void testKnownAzimuthA() {
   LatLon begin = LatLon.fromDegrees(30.000000, -102.000000);
   LatLon end = LatLon.fromDegrees(34.000000, -97.000000);
   Angle theta =
       LatLon.ellipsoidalForwardAzimuth(
           begin, end, globe.getEquatorialRadius(), globe.getPolarRadius());
   assertEquals("Known ellipsoidal Azimuth A", 45.50583, theta.degrees, TOLERANCE);
 }
 @Test
 public void testKnownDistanceD() {
   LatLon begin = LatLon.fromDegrees(51.4898, 0.0539);
   LatLon end = LatLon.fromDegrees(42.3232, -71.0974);
   double distance =
       LatLon.ellipsoidalDistance(
           begin, end, globe.getEquatorialRadius(), globe.getPolarRadius());
   assertEquals("Known ellipsoidal distance D", 5296396.967, distance, TOLERANCE);
 }
 @Test
 public void testKnownDistanceC() {
   LatLon begin = LatLon.fromDegrees(-31.9236, 116.1231);
   LatLon end = LatLon.fromDegrees(23.6937, 121.9831);
   double distance =
       LatLon.ellipsoidalDistance(
           begin, end, globe.getEquatorialRadius(), globe.getPolarRadius());
   assertEquals("Known ellipsoidal distance C", 6186281.864, distance, TOLERANCE);
 }