-
Notifications
You must be signed in to change notification settings - Fork 0
/
inverse.c
32 lines (27 loc) · 927 Bytes
/
inverse.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* @file inverse.c
* @brief A test program for geod_inverse()
**********************************************************************/
#include <stdio.h>
#include "geodesic.h"
#if defined(_MSC_VER)
/* Squelch warnings about scanf */
# pragma warning (disable: 4996)
#endif
/**
* A simple program to solve the inverse geodesic problem.
*
* This program reads in lines with lat1, lon1, lat2, lon2 and prints out lines
* with azi1, azi2, s12 (for the WGS84 ellipsoid).
**********************************************************************/
int main() {
double a = 6378137, f = 1/298.257223563; /* WGS84 */
double lat1, lon1, azi1, lat2, lon2, azi2, s12;
struct geod_geodesic g;
geod_init(&g, a, f);
while (scanf("%lf %lf %lf %lf", &lat1, &lon1, &lat2, &lon2) == 4) {
geod_inverse(&g, lat1, lon1, lat2, lon2, &s12, &azi1, &azi2);
printf("%.15f %.15f %.10f\n", azi1, azi2, s12);
}
return 0;
}