public static void main(String[] args) {
double latA = 39.9042;
double lonA = 116.4074;
double latB = 18.5445;
double lonB = 17.65840;
double angle = calculateCentralAngle(latA, lonA, latB, lonB);
System.out.printf("从地心到北京与上海的夹角约为: %.4f 度%n", angle);
}
public static double calculateCentralAngle(double latA, double lonA, double latB, double lonB) {
double latA_rad = Math.toRadians(latA);
double lonA_rad = Math.toRadians(lonA);
double latB_rad = Math.toRadians(latB);
double lonB_rad = Math.toRadians(lonB);
double xA = Math.cos(latA_rad) * Math.cos(lonA_rad);
double yA = Math.cos(latA_rad) * Math.sin(lonA_rad);
double zA = Math.sin(latA_rad);
double xB = Math.cos(latB_rad) * Math.cos(lonB_rad);
double yB = Math.cos(latB_rad) * Math.sin(lonB_rad);
double zB = Math.sin(latB_rad);
double dotProduct = xA * xB + yA * yB + zA * zB;
double theta_rad = Math.acos(dotProduct);
return Math.toDegrees(theta_rad);
}