aboutsummaryrefslogtreecommitdiff
path: root/src/PJ_collg.c
diff options
context:
space:
mode:
authorKristian Evers <kristianevers@gmail.com>2017-07-17 23:10:09 +0200
committerKristian Evers <kristianevers@gmail.com>2017-07-18 11:47:20 +0200
commitad7a7c1b1d54c69b9df442797a809418d00d647d (patch)
treead9a4dd1bb9aa1fcbc17e82508ec0482d1d6d06d /src/PJ_collg.c
parent2ec0759b8cdd45deae8b9aba70ec7d23c7c3ddd8 (diff)
downloadPROJ-ad7a7c1b1d54c69b9df442797a809418d00d647d.tar.gz
PROJ-ad7a7c1b1d54c69b9df442797a809418d00d647d.zip
Expanded *_ERROR* macros.
Expanded *_ERROR* macros with calls to proj_errno_set() and proper returns when necessary. Defined a bunch of new PJD_ERR_ constants in projects.h that corresponds to the error numbers in pj_strerrno.c. A few unknown error numbers were replaced by existing ones in pj_strerrno.c.
Diffstat (limited to 'src/PJ_collg.c')
-rw-r--r--src/PJ_collg.c50
1 files changed, 28 insertions, 22 deletions
diff --git a/src/PJ_collg.c b/src/PJ_collg.c
index baac1af9..c646d99a 100644
--- a/src/PJ_collg.c
+++ b/src/PJ_collg.c
@@ -1,37 +1,43 @@
#define PJ_LIB__
-# include <projects.h>
+#include <proj.h>
+#include "projects.h"
PROJ_HEAD(collg, "Collignon") "\n\tPCyl, Sph.";
-#define FXC 1.12837916709551257390
-#define FYC 1.77245385090551602729
-#define ONEEPS 1.0000001
+#define FXC 1.12837916709551257390
+#define FYC 1.77245385090551602729
+#define ONEEPS 1.0000001
static XY s_forward (LP lp, PJ *P) { /* Spheroidal, forward */
XY xy = {0.0,0.0};
- (void) P;
- if ((xy.y = 1. - sin(lp.phi)) <= 0.)
- xy.y = 0.;
- else
- xy.y = sqrt(xy.y);
- xy.x = FXC * lp.lam * xy.y;
- xy.y = FYC * (1. - xy.y);
- return (xy);
+ (void) P;
+ if ((xy.y = 1. - sin(lp.phi)) <= 0.)
+ xy.y = 0.;
+ else
+ xy.y = sqrt(xy.y);
+ xy.x = FXC * lp.lam * xy.y;
+ xy.y = FYC * (1. - xy.y);
+ return (xy);
}
static LP s_inverse (XY xy, PJ *P) { /* Spheroidal, inverse */
LP lp = {0.0,0.0};
- lp.phi = xy.y / FYC - 1.;
- if (fabs(lp.phi = 1. - lp.phi * lp.phi) < 1.)
- lp.phi = asin(lp.phi);
- else if (fabs(lp.phi) > ONEEPS) I_ERROR
- else lp.phi = lp.phi < 0. ? -M_HALFPI : M_HALFPI;
- if ((lp.lam = 1. - sin(lp.phi)) <= 0.)
- lp.lam = 0.;
- else
- lp.lam = xy.x / (FXC * sqrt(lp.lam));
- return (lp);
+ lp.phi = xy.y / FYC - 1.;
+ if (fabs(lp.phi = 1. - lp.phi * lp.phi) < 1.)
+ lp.phi = asin(lp.phi);
+ else if (fabs(lp.phi) > ONEEPS) {
+ proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
+ return lp;
+ } else {
+ lp.phi = lp.phi < 0. ? -M_HALFPI : M_HALFPI;
+ }
+
+ if ((lp.lam = 1. - sin(lp.phi)) <= 0.)
+ lp.lam = 0.;
+ else
+ lp.lam = xy.x / (FXC * sqrt(lp.lam));
+ return (lp);
}