diff options
| author | Kristian Evers <kristianevers@gmail.com> | 2018-12-26 10:53:01 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-26 10:53:01 +0100 |
| commit | 81ec8c0b58d66333fccd3703dab62a11132a0331 (patch) | |
| tree | 41b4675d169f849516649700ab4f50d4cffa4c02 /src/projections/crast.cpp | |
| parent | 355d681ed88019e97742344bd642c2fd97e700a1 (diff) | |
| parent | 80dad6ef2bed4a83008db06986dc168918d48476 (diff) | |
| download | PROJ-81ec8c0b58d66333fccd3703dab62a11132a0331.tar.gz PROJ-81ec8c0b58d66333fccd3703dab62a11132a0331.zip | |
Merge pull request #1203 from rouault/cpp_conversion
Conversion of most C files to C++
Diffstat (limited to 'src/projections/crast.cpp')
| -rw-r--r-- | src/projections/crast.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/projections/crast.cpp b/src/projections/crast.cpp new file mode 100644 index 00000000..4e4dee8b --- /dev/null +++ b/src/projections/crast.cpp @@ -0,0 +1,40 @@ +#define PJ_LIB__ +#include <math.h> + +#include "projects.h" + +PROJ_HEAD(crast, "Craster Parabolic (Putnins P4)") "\n\tPCyl, Sph"; + +#define XM 0.97720502380583984317 +#define RXM 1.02332670794648848847 +#define YM 3.06998012383946546542 +#define RYM 0.32573500793527994772 +#define THIRD 0.333333333333333333 + + +static XY s_forward (LP lp, PJ *P) { /* Spheroidal, forward */ + XY xy = {0.0,0.0}; + (void) P; + lp.phi *= THIRD; + xy.x = XM * lp.lam * (2. * cos(lp.phi + lp.phi) - 1.); + xy.y = YM * sin(lp.phi); + return xy; +} + + +static LP s_inverse (XY xy, PJ *P) { /* Spheroidal, inverse */ + LP lp = {0.0,0.0}; + (void) P; + lp.phi = 3. * asin(xy.y * RYM); + lp.lam = xy.x * RXM / (2. * cos((lp.phi + lp.phi) * THIRD) - 1); + return lp; +} + + +PJ *PROJECTION(crast) { + P->es = 0.0; + P->inv = s_inverse; + P->fwd = s_forward; + + return P; +} |
