2
static const char SCCSID[]="@(#)geod_for.c 4.6 95/09/23 GIE REL";
8
th1,costh1,sinth1,sina12,cosa12,M,N,c1,c2,D,P,s1;
13
al12 = adjlon(al12); /* reduce to +- 0-PI */
14
signS = fabs(al12) > HALFPI ? 1 : 0;
15
th1 = ellipse ? atan(onef * tan(phi1)) : phi1;
18
if ((merid = fabs(sina12 = sin(al12)) < MERI_TOL)) {
20
cosa12 = fabs(al12) < HALFPI ? 1. : -1.;
36
c2 = f4 * (1. - M * M);
37
D = (1. - c2)*(1. - c2 - c1 * M);
38
P = (1. + .5 * c1 * M) * c2 / D;
41
if (merid) s1 = HALFPI - th1;
43
s1 = (fabs(M) >= 1.) ? 0. : acos(M);
44
s1 = sinth1 / sin(s1);
45
s1 = (fabs(s1) >= 1.) ? 0. : acos(s1);
50
double d,sind,u,V,X,ds,cosds,sinds,ss,de;
57
X = c2 * c2 * (sind = sin(d)) * cos(d) * (2. * V * V - 1.);
58
ds = d + X - 2. * P * V * (1. - 2. * P * cos(u)) * sind;
66
if (signS) sinds = - sinds;
67
al21 = N * cosds - sinth1 * sinds;
69
phi2 = atan( tan(HALFPI + s1 - ds) / onef);
87
al21 = atan(M / al21);
93
phi2 = atan(-(sinth1 * cosds + N * sinds) * sin(al21) /
94
(ellipse ? onef * M : M));
95
de = atan2(sinds * sina12 ,
96
(costh1 * cosds - sinth1 * sinds * cosa12));
99
de += c1 * ((1. - c2) * ds +
100
c2 * sinds * cos(ss));
102
de -= c1 * ((1. - c2) * ds -
103
c2 * sinds * cos(ss));
105
lam2 = adjlon( lam1 + de );