aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xnad/testvarious4
-rw-r--r--nad/tv_out.dist16
-rw-r--r--src/PJ_aeqd.c17
-rw-r--r--src/geod_interface.c22
-rw-r--r--src/proj_api.h4
5 files changed, 28 insertions, 35 deletions
diff --git a/nad/testvarious b/nad/testvarious
index 694d0d19..988b6d7b 100755
--- a/nad/testvarious
+++ b/nad/testvarious
@@ -656,7 +656,7 @@ EOF
echo "##############################################################" >> ${OUT}
echo "Test bug 244 " >> ${OUT}
#
-$EXE -f '%.12f' \
+$EXE -f '%.9f' \
+init=epsg:4326 \
+to +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m +no_defs \
-E >>${OUT} <<EOF
@@ -669,7 +669,7 @@ $EXE -f '%.12f' \
+proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m +no_defs \
+to +init=epsg:4326 \
-E >>${OUT} <<EOF
-987122.4183302754536 -14429896.5395309105515
+987122.418330284 -14429896.539530909
EOF
echo "##############################################################" >> ${OUT}
echo "Test bug 245 (use +datum=carthage)" >> ${OUT}
diff --git a/nad/tv_out.dist b/nad/tv_out.dist
index d36ab5b2..8cdd7074 100644
--- a/nad/tv_out.dist
+++ b/nad/tv_out.dist
@@ -20,8 +20,8 @@ Test simple prime meridian handling.
##############################################################
Test support for the lon_wrap switch.
1d00'00.000"W 10d00'00.000"N 0.0 359dE 10dN 0.000
-0d00'00.000"W 10d00'00.000"N 0.0 360dE 10dN 0.000
-0d00'00.000"E 10d00'00.000"N 0.0 360dE 10dN 0.000
+0d00'00.000"W 10d00'00.000"N 0.0 0dE 10dN 0.000
+0d00'00.000"E 10d00'00.000"N 0.0 0dE 10dN 0.000
1d00'00.000"E 45d00'00.000"N 0.0 1dE 45dN 0.000
179d00'00.000"E 45d00'00.000"N 0.0 179dE 45dN 0.000
181d00'00.000"E 45d00'00.000"N 0.0 181dE 45dN 0.000
@@ -101,8 +101,8 @@ Test healpix forward projection on sphere
90.0 0 7.85398 0.00000 0.00000
-90.0 0 -7.85398 0.00000 0.00000
-180 0 -15.70796 0.00000 0.00000
--180 90.0 -19.63495 7.85398 0.00000
--180 -90.0 -19.63495 -7.85398 0.00000
+-180 90.0 -11.78097 7.85398 0.00000
+-180 -90.0 -11.78097 -7.85398 0.00000
0 60.0 1.43738 5.36437 0.00000
0 -60.0 1.43738 -5.36437 0.00000
Test healpix forward projection on ellipsoid
@@ -114,8 +114,8 @@ Test healpix forward projection on ellipsoid
90.0 0 6.78898 0.00000 0.00000
-90.0 0 -6.78898 0.00000 0.00000
-180 0 -13.57797 0.00000 0.00000
--180 90.0 -16.97246 6.78898 0.00000
--180 -90.0 -16.97246 -6.78898 0.00000
+-180 90.0 -10.18348 6.78898 0.00000
+-180 -90.0 -10.18348 -6.78898 0.00000
0 60.0 0.00000 3.35128 0.00000
0 -60.0 0.00000 -3.35128 0.00000
Test healpix inverse projection on ellipsoid
@@ -307,10 +307,10 @@ Test bug 229 (2)
13 -10 13.0000000000000 -10.0000000000000 0.0000000000000
##############################################################
Test bug 244
--140.100000 -87.000000 987122.418330275454 -14429896.539530910552 0.000000000000
+-140.100000 -87.000000 987122.418330284 -14429896.539530909 0.000000000
##############################################################
Test bug 244 (2)
-987122.4183302754536 -14429896.5395309105515 -140.100000000000 -87.000000000000 0.000000000000
+987122.418330284 -14429896.539530909 -140.100000000000 -87.000000000000 0.000000000000
##############################################################
Test bug 245 (use +datum=carthage)
10 34 592302.9819462 3762148.7340610 -30.3110170
diff --git a/src/PJ_aeqd.c b/src/PJ_aeqd.c
index 739dfdd6..22a75ac8 100644
--- a/src/PJ_aeqd.c
+++ b/src/PJ_aeqd.c
@@ -44,7 +44,6 @@ PROJ_HEAD(aeqd, "Azimuthal Equidistant") "\n\tAzi, Sph&Ell\n\tlat_0 guam";
#define EPS10 1.e-10
#define TOL 1.e-14
-#define RHO 57.295779513082320876798154814105
#define N_POLE 0
#define S_POLE 1
@@ -85,11 +84,11 @@ FORWARD(e_forward); /* elliptical */
break;
}
- phi1 = P->phi0*RHO; lam1 = P->lam0*RHO;
- phi2 = lp.phi*RHO; lam2 = (lp.lam+P->lam0)*RHO;
+ phi1 = P->phi0 / DEG_TO_RAD; lam1 = P->lam0 / DEG_TO_RAD;
+ phi2 = lp.phi / DEG_TO_RAD; lam2 = (lp.lam+P->lam0) / DEG_TO_RAD;
geod_inverse(&P->g, phi1, lam1, phi2, lam2, &s12, &azi1, &azi2);
- azi1 /= RHO;
+ azi1 *= DEG_TO_RAD;
xy.x = s12 * sin(azi1) / P->a;
xy.y = s12 * cos(azi1) / P->a;
break;
@@ -160,13 +159,13 @@ INVERSE(e_inverse); /* elliptical */
x2 = xy.x * P->a;
y2 = xy.y * P->a;
- lat1 = P->phi0 * RHO;
- lon1 = P->lam0 * RHO;
- azi1 = atan2(x2, y2) * RHO;
+ lat1 = P->phi0 / DEG_TO_RAD;
+ lon1 = P->lam0 / DEG_TO_RAD;
+ azi1 = atan2(x2, y2) / DEG_TO_RAD;
s12 = sqrt(x2 * x2 + y2 * y2);
geod_direct(&P->g, lat1, lon1, azi1, s12, &lat2, &lon2, &azi2);
- lp.phi = lat2 / RHO;
- lp.lam = lon2 / RHO;
+ lp.phi = lat2 * DEG_TO_RAD;
+ lp.lam = lon2 * DEG_TO_RAD;
lp.lam -= P->lam0;
} else { /* Polar */
lp.phi = pj_inv_mlfn(P->ctx, P->mode == N_POLE ? P->Mp - c : P->Mp + c,
diff --git a/src/geod_interface.c b/src/geod_interface.c
index 63b16b1e..a30377ac 100644
--- a/src/geod_interface.c
+++ b/src/geod_interface.c
@@ -1,20 +1,14 @@
#include "projects.h"
#include "geod_interface.h"
-/* DEG_IN is a crock to work around the problem that dmstor.c uses the wrong
- * value for pi/180 (namely .0174532925199433 which is an inaccurately
- * truncated version of DEG_TO_RAD).
- */
-#define DEG_IN .0174532925199433
-#define DEG_OUT DEG_TO_RAD;
-
void geod_ini(void) {
geod_init(&GlobalGeodesic, geod_a, geod_f);
}
void geod_pre(void) {
double
- lat1 = phi1 / DEG_IN, lon1 = lam1 / DEG_IN, azi1 = al12 / DEG_IN;
+ lat1 = phi1 / DEG_TO_RAD, lon1 = lam1 / DEG_TO_RAD,
+ azi1 = al12 / DEG_TO_RAD;
geod_lineinit(&GlobalGeodesicLine, &GlobalGeodesic, lat1, lon1, azi1, 0U);
}
@@ -23,17 +17,17 @@ void geod_for(void) {
s12 = geod_S, lat2, lon2, azi2;
geod_position(&GlobalGeodesicLine, s12, &lat2, &lon2, &azi2);
azi2 += azi2 >= 0 ? -180 : 180; /* Compute back azimuth */
- phi2 = lat2 * DEG_OUT;
- lam2 = lon2 * DEG_OUT;
- al21 = azi2 * DEG_OUT;
+ phi2 = lat2 * DEG_TO_RAD;
+ lam2 = lon2 * DEG_TO_RAD;
+ al21 = azi2 * DEG_TO_RAD;
}
void geod_inv(void) {
double
- lat1 = phi1 / DEG_IN, lon1 = lam1 / DEG_IN,
- lat2 = phi2 / DEG_IN, lon2 = lam2 / DEG_IN,
+ lat1 = phi1 / DEG_TO_RAD, lon1 = lam1 / DEG_TO_RAD,
+ lat2 = phi2 / DEG_TO_RAD, lon2 = lam2 / DEG_TO_RAD,
azi1, azi2, s12;
geod_inverse(&GlobalGeodesic, lat1, lon1, lat2, lon2, &s12, &azi1, &azi2);
azi2 += azi2 >= 0 ? -180 : 180; /* Compute back azimuth */
- al12 = azi1 * DEG_OUT; al21 = azi2 * DEG_OUT; geod_S = s12;
+ al12 = azi1 * DEG_TO_RAD; al21 = azi2 * DEG_TO_RAD; geod_S = s12;
}
diff --git a/src/proj_api.h b/src/proj_api.h
index 99faeafb..9e1e49a8 100644
--- a/src/proj_api.h
+++ b/src/proj_api.h
@@ -46,8 +46,8 @@ extern "C" {
extern char const pj_release[]; /* global release id string */
-#define RAD_TO_DEG 57.29577951308232
-#define DEG_TO_RAD .0174532925199432958
+#define RAD_TO_DEG 57.295779513082321
+#define DEG_TO_RAD .017453292519943296
extern int pj_errno; /* global error return code */