개발자 모드/C언어
C언어 GPS 좌표간 방위각 구하기
인생은직구
2021. 3. 21. 11:42
728x90
#include "stdafx.h"
#include "math.h"
#include <stdio.h>
#define PI 3.141592653589
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지
double ConvertDecimalDegreesToRadians(double deg)
{
return (deg * PI / 180);
}
double ConvertRadiansToDecimalDegrees(double rad)
{
return (rad * 180 / PI);
}
int main(void)
{
double lon1,lat1;
double lon2,lat2;
printf("기준표적 경도/ 위도를 넣으시오\n");
scanf("%lf %lf",&lon1, &lat1);
printf("대상표적 경도 / 위도를 넣으시오\n");
scanf("%lf %lf",&lon2, &lat2);
printf("%lf %lf\n", lat1, lon1);
printf("%lf %lf\n", lat2, lon2);
double lat1_rad = ConvertDecimalDegreesToRadians(lat1);
printf("%lf\n", lat1_rad);
double lat2_rad = ConvertDecimalDegreesToRadians(lat2);
printf("%lf\n", lat2_rad);
double lon_diff_rad = ConvertDecimalDegreesToRadians(lon2-lon1);
printf("%lf\n", lon_diff_rad);
double y = sin(lon_diff_rad) *cos(lat2_rad);
double x = cos(lat1_rad) * sin(lat2_rad) -sin(lat1_rad) * cos(lat2_rad) *cos(lon_diff_rad);
int ret = ((int)ConvertRadiansToDecimalDegrees(atan2(y,x))+360) % 360;
printf ("%d\n",ret);
return 0;
}
결과
728x90