개발자 모드/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