Statistics
| Revision:

svn-gvsig-desktop / tags / v1_9_Build_1230 / libraries / libjni-proj4 / src / PJ_bacon.c @ 33666

History | View | Annotate | Download (1.06 KB)

1
#ifndef lint
2
static const char SCCSID[]="@(#)PJ_bacon.c        4.1        94/02/15        GIE        REL";
3
#endif
4
# define HLFPI2        2.46740110027233965467
5
# define EPS        1e-10
6
#define PROJ_PARMS__ \
7
        int bacn; \
8
        int ortl;
9
#define PJ_LIB__
10
#include        <projects.h>
11
PROJ_HEAD(apian, "Apian Globular I") "\n\tMisc Sph, no inv.";
12
PROJ_HEAD(ortel, "Ortelius Oval") "\n\tMisc Sph, no inv.";
13
PROJ_HEAD(bacon, "Bacon Globular") "\n\tMisc Sph, no inv.";
14
FORWARD(s_forward); /* spheroid */
15
        double ax, f;
16

    
17
        xy.y = P->bacn ? HALFPI * sin(lp.phi) : lp.phi;
18
        if ((ax = fabs(lp.lam)) >= EPS) {
19
                if (P->ortl && ax >= HALFPI)
20
                        xy.x = sqrt(HLFPI2 - lp.phi * lp.phi + EPS) + ax - HALFPI;
21
                else {
22
                        f = 0.5 * (HLFPI2 / ax + ax);
23
                        xy.x = ax - f + sqrt(f * f - xy.y * xy.y);
24
                }
25
                if (lp.lam < 0.) xy.x = - xy.x;
26
        } else
27
                xy.x = 0.;
28
        return (xy);
29
}
30
FREEUP; if (P) pj_dalloc(P); }
31
ENTRY0(bacon)
32
        P->bacn = 1;
33
        P->ortl = 0;
34
        P->es = 0.; P->fwd = s_forward;
35
ENDENTRY(P)
36
ENTRY0(apian)
37
        P->bacn = P->ortl = 0;
38
        P->es = 0.; P->fwd = s_forward;
39
ENDENTRY(P)
40
ENTRY0(ortel)
41
        P->bacn = 0;
42
        P->ortl = 1;
43
        P->es = 0.; P->fwd = s_forward;
44
ENDENTRY(P)