/src/PROJ/src/projections/eck1.cpp
Line | Count | Source |
1 | | |
2 | | #include <math.h> |
3 | | |
4 | | #include "proj.h" |
5 | | #include "proj_internal.h" |
6 | | |
7 | | PROJ_HEAD(eck1, "Eckert I") "\n\tPCyl, Sph"; |
8 | 13.7k | #define FC 0.92131773192356127802 |
9 | 6.88k | #define RP 0.31830988618379067154 |
10 | | |
11 | 6.88k | static PJ_XY eck1_s_forward(PJ_LP lp, PJ *P) { /* Spheroidal, forward */ |
12 | 6.88k | PJ_XY xy = {0.0, 0.0}; |
13 | 6.88k | (void)P; |
14 | | |
15 | 6.88k | xy.x = FC * lp.lam * (1. - RP * fabs(lp.phi)); |
16 | 6.88k | xy.y = FC * lp.phi; |
17 | | |
18 | 6.88k | return xy; |
19 | 6.88k | } |
20 | | |
21 | 0 | static PJ_LP eck1_s_inverse(PJ_XY xy, PJ *P) { /* Spheroidal, inverse */ |
22 | 0 | PJ_LP lp = {0.0, 0.0}; |
23 | 0 | (void)P; |
24 | |
|
25 | 0 | lp.phi = xy.y / FC; |
26 | 0 | lp.lam = xy.x / (FC * (1. - RP * fabs(lp.phi))); |
27 | |
|
28 | 0 | return (lp); |
29 | 0 | } |
30 | | |
31 | 146 | PJ *PJ_PROJECTION(eck1) { |
32 | 146 | P->es = 0.0; |
33 | 146 | P->inv = eck1_s_inverse; |
34 | 146 | P->fwd = eck1_s_forward; |
35 | | |
36 | 146 | return P; |
37 | 146 | } |