diff options
Diffstat (limited to 'src/3rdparty/proj/pj_gauss.c')
-rw-r--r-- | src/3rdparty/proj/pj_gauss.c | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/src/3rdparty/proj/pj_gauss.c b/src/3rdparty/proj/pj_gauss.c deleted file mode 100644 index ac794f20..00000000 --- a/src/3rdparty/proj/pj_gauss.c +++ /dev/null @@ -1,94 +0,0 @@ -/* -** libproj -- library of cartographic projections -** -** Copyright (c) 2003 Gerald I. Evenden -*/ -static const char -LIBPROJ_ID[] = "$Id: pj_gauss.c 1504 2009-01-06 02:11:57Z warmerdam $"; -/* -** Permission is hereby granted, free of charge, to any person obtaining -** a copy of this software and associated documentation files (the -** "Software"), to deal in the Software without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Software, and to -** permit persons to whom the Software is furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be -** included in all copies or substantial portions of the Software. -** -** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -#define PJ_LIB__ -#include <projects.h> - -#define MAX_ITER 20 - -struct GAUSS { - double C; - double K; - double e; - double ratexp; -}; -#define EN ((struct GAUSS *)en) -#define DEL_TOL 1e-14 - static double -srat(double esinp, double exp) { - return(pow((1.-esinp)/(1.+esinp), exp)); -} - - void * -pj_gauss_ini(double e, double phi0, double *chi, double *rc) { - double sphi, cphi, es; - struct GAUSS *en; - - if ((en = (struct GAUSS *)malloc(sizeof(struct GAUSS))) == NULL) - return (NULL); - es = e * e; - EN->e = e; - sphi = sin(phi0); - cphi = cos(phi0); cphi *= cphi; - *rc = sqrt(1. - es) / (1. - es * sphi * sphi); - EN->C = sqrt(1. + es * cphi * cphi / (1. - es)); - *chi = asin(sphi / EN->C); - EN->ratexp = 0.5 * EN->C * e; - EN->K = tan(.5 * *chi + FORTPI) / ( - pow(tan(.5 * phi0 + FORTPI), EN->C) * - srat(EN->e * sphi, EN->ratexp) ); - return ((void *)en); -} - LP -pj_gauss(LP elp, const void *en) { - LP slp; - - slp.phi = 2. * atan( EN->K * - pow(tan(.5 * elp.phi + FORTPI), EN->C) * - srat(EN->e * sin(elp.phi), EN->ratexp) ) - HALFPI; - slp.lam = EN->C * (elp.lam); - return(slp); -} - LP -pj_inv_gauss(LP slp, const void *en) { - LP elp; - double num; - int i; - - elp.lam = slp.lam / EN->C; - num = pow(tan(.5 * slp.phi + FORTPI)/EN->K, 1./EN->C); - for (i = MAX_ITER; i; --i) { - elp.phi = 2. * atan(num * srat(EN->e * sin(slp.phi), -.5 * EN->e)) - - HALFPI; - if (fabs(elp.phi - slp.phi) < DEL_TOL) break; - slp.phi = elp.phi; - } - /* convergence failed */ - if (!i) - pj_errno = -17; - return (elp); -} |