test_class.file: optaweb-vehicle-routing-backend/src/test/java/org/optaweb/vehiclerouting/plugin/planner/domain/PlanningLocationTest.java
test_class.identifier: PlanningLocationTest
test_case.body: @Test
      void angle_from_depot_at_zero_should_be_atan2_of_latitude_longitude() {
          PlanningLocation center = locationAt(0, 0);
  
          assertThat(center.angleTo(locationAt(0, 1))).isZero();
          assertThat(center.angleTo(locationAt(0, -1))).isEqualTo(Math.PI);
          assertThat(center.angleTo(locationAt(1, 0))).isEqualTo(Math.PI / 2);
          assertThat(center.angleTo(locationAt(-1, 0))).isEqualTo(-Math.PI / 2);
          assertThat(center.angleTo(locationAt(-Double.MIN_VALUE, -1))).isEqualTo(-Math.PI);
          assertThat(center.angleTo(locationAt(-0, 1))).isZero();
      }
test_case.class_method_signature: PlanningLocationTest.angle_from_depot_at_zero_should_be_atan2_of_latitude_longitude()
test_case.full_signature: @Test void angle_from_depot_at_zero_should_be_atan2_of_latitude_longitude()
test_case.identifier: angle_from_depot_at_zero_should_be_atan2_of_latitude_longitude
test_case.invocations: locationAt isZero assertThat angleTo locationAt isEqualTo assertThat angleTo locationAt isEqualTo assertThat angleTo locationAt isEqualTo assertThat angleTo locationAt isEqualTo assertThat angleTo locationAt isZero assertThat angleTo locationAt
test_case.modifiers: @Test
test_case.parameters: ()
test_case.return: void
test_case.signature: void angle_from_depot_at_zero_should_be_atan2_of_latitude_longitude()
focal_class.declarator: id
focal_class.modifier: private final
focal_class.original_string: private final long id;
focal_class.type: long
focal_class.var_name: id
focal_class.declarator: latitude
focal_class.modifier: private final
focal_class.original_string: private final double latitude;
focal_class.type: double
focal_class.var_name: latitude
focal_class.declarator: longitude
focal_class.modifier: private final
focal_class.original_string: private final double longitude;
focal_class.type: double
focal_class.var_name: longitude
focal_class.declarator: travelDistanceMap
focal_class.modifier: private final
focal_class.original_string: private final DistanceMap travelDistanceMap;
focal_class.type: DistanceMap
focal_class.var_name: travelDistanceMap
focal_class.file: optaweb-vehicle-routing-backend/src/main/java/org/optaweb/vehiclerouting/plugin/planner/domain/PlanningLocation.java
focal_class.identifier: PlanningLocation
focal_class.class_method_signature: PlanningLocation.PlanningLocation(long id, double latitude, double longitude, DistanceMap travelDistanceMap)
focal_class.full_signature:   PlanningLocation(long id, double latitude, double longitude, DistanceMap travelDistanceMap)
focal_class.identifier: PlanningLocation
focal_class.parameters: (long id, double latitude, double longitude, DistanceMap travelDistanceMap)
focal_class.signature:  PlanningLocation(long id, double latitude, double longitude, DistanceMap travelDistanceMap)
focal_class.class_method_signature: PlanningLocation.getId()
focal_class.full_signature: public long getId()
focal_class.identifier: getId
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getId()
focal_class.class_method_signature: PlanningLocation.distanceTo(PlanningLocation location)
focal_class.full_signature: public long distanceTo(PlanningLocation location)
focal_class.identifier: distanceTo
focal_class.modifiers: public
focal_class.parameters: (PlanningLocation location)
focal_class.return: long
focal_class.signature: long distanceTo(PlanningLocation location)
focal_class.class_method_signature: PlanningLocation.angleTo(PlanningLocation location)
focal_class.full_signature: public double angleTo(PlanningLocation location)
focal_class.identifier: angleTo
focal_class.modifiers: public
focal_class.parameters: (PlanningLocation location)
focal_class.return: double
focal_class.signature: double angleTo(PlanningLocation location)
focal_class.class_method_signature: PlanningLocation.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_method.body: public double angleTo(PlanningLocation location) {
          // Euclidean distance (Pythagorean theorem) - not correct when the surface is a sphere
          double latitudeDifference = location.latitude - latitude;
          double longitudeDifference = location.longitude - longitude;
          return Math.atan2(latitudeDifference, longitudeDifference);
      }
focal_method.class_method_signature: PlanningLocation.angleTo(PlanningLocation location)
focal_method.full_signature: public double angleTo(PlanningLocation location)
focal_method.identifier: angleTo
focal_method.invocations: atan2
focal_method.modifiers: public
focal_method.parameters: (PlanningLocation location)
focal_method.return: double
focal_method.signature: double angleTo(PlanningLocation location)