#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
#define EARTH_RADIUS_KM 6371.0 // 지구의 평균 반지름 (단위: km)
double degrees_to_radians(double degrees) {
return degrees * (PI / 180.0);
}
double calculate_distance(double lat1, double lon1, double lat2, double lon2) {
double lat1_rad = degrees_to_radians(lat1);
double lon1_rad = degrees_to_radians(lon1);
double lat2_rad = degrees_to_radians(lat2);
double lon2_rad = degrees_to_radians(lon2);
double dlat = lat2_rad - lat1_rad;
double dlon = lon2_rad - lon1_rad;
double a = sin(dlat / 2.0) * sin(dlat / 2.0) +
cos(lat1_rad) * cos(lat2_rad) *
sin(dlon / 2.0) * sin(dlon / 2.0);
double c = 2.0 * atan2(sqrt(a), sqrt(1.0 - a));
return EARTH_RADIUS_KM * c;
}
int main() {
double lat1, lon1;
double lat2, lon2;
printf("========== 포켓몬 GO 좌표 거리 계산기 ==========\n");
// 첫 번째 좌표 입력
printf("1번째 위치의 위도,경도를 입력하세요 (예: 42.819577,-85.999999):\n");
if (scanf("%lf,%lf", &lat1, &lon1) != 2) {
printf("입력 형식이 올바르지 않습니다. (쉼표로 구분해주세요)\n");
return 1;
}
// 두 번째 좌표 입력
printf("\n2번째 위치의 위도,경도를 입력하세요 (예: 37.5665,126.9780):\n");
if (scanf("%lf,%lf", &lat2, &lon2) != 2) {
printf("입력 형식이 올바르지 않습니다. (쉼표로 구분해주세요)\n");
return 1;
}
// 거리 계산
double distance = calculate_distance(lat1, lon1, lat2, lon2);
// 결과 출력
printf("\n[계산 결과]\n");
printf("1번 위치: %f, %f\n", lat1, lon1);
printf("2번 위치: %f, %f\n", lat2, lon2);
printf("직선 이동 거리: %.4f km\n", distance);
printf("================================================\n");
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: