#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;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: