diff options
| author | Micah Cochran <micahcochran@users.noreply.github.com> | 2016-03-27 12:32:06 -0500 |
|---|---|---|
| committer | Micah Cochran <micahcochran@users.noreply.github.com> | 2016-03-27 12:32:06 -0500 |
| commit | 2c66023e0692b32187e62beaaf3d456ef0c8a602 (patch) | |
| tree | 9606498bd5d161261cfc857adc0d06134d41e432 | |
| parent | 3038315ab1cde75268a474a3170215d887f0c583 (diff) | |
| download | PROJ-2c66023e0692b32187e62beaaf3d456ef0c8a602.tar.gz PROJ-2c66023e0692b32187e62beaaf3d456ef0c8a602.zip | |
Note revisions. Add licensing. Add supplemental information about project, algorithm, and algorithm lineage.
| -rw-r--r-- | src/PJ_patterson.c | 68 |
1 files changed, 48 insertions, 20 deletions
diff --git a/src/PJ_patterson.c b/src/PJ_patterson.c index 0483bf6e..6fa10c28 100644 --- a/src/PJ_patterson.c +++ b/src/PJ_patterson.c @@ -1,17 +1,45 @@ /*
- * The Patterson projection was designed by Tom Patterson, US National
+ * Copyright (c) 2014 Bojan Savric
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * The Patterson Cylindrical projection was designed by Tom Patterson, US National
* Park Service, in 2014, using Flex Projector. The polynomial equations for the
* projection were developed by Bojan Savric, Oregon State University, in
* collaboration with Tom Patterson and Bernhard Jenny, Oregon State University.
*
- * Java reference algorithm implemented by Bojan Savric in JMapProjLib
- * project (file PattersonProjection.java)
+ * Java reference algorithm implemented by Bojan Savric in Java Map Projection
+ * Library (a Java port of PROJ.4) in the file PattersonProjection.java.
*
- * Port to Proj.4 by Micah Cochran, 26 March 2016
+ * References:
+ * Java Map Projection Library
+ * https://github.com/OSUCartography/JMapProjLib
+ *
+ * Patterson Cylindrical Projection
+ * http://shadedrelief.com/patterson/
+ *
+ * Patterson, T., Savric, B., and Jenny, B. (2015). Cartographic Perspectives
+ * (No.78). Describes the projection design and characteristics, and
+ * developing the equations. doi:10.14714/CP78.1270
+ * http://dx.doi.org/10.14714/CP78.1270
+ *
+ * Port to PROJ.4 by Micah Cochran, 26 March 2016
*/
#define PJ_LIB__
-# include <projects.h>
+# include <projects.h>
PROJ_HEAD(patterson, "Patterson Cylindrical") "\n\tCyl.";
#define K1 1.0148
#define K2 0.23185
@@ -26,15 +54,15 @@ PROJ_HEAD(patterson, "Patterson Cylindrical") "\n\tCyl."; FORWARD(s_forward); /* spheroid */
double phi2;
- (void) P;
+ (void) P;
phi2 = lp.phi * lp.phi;
- xy.x = lp.lam;
+ xy.x = lp.lam;
xy.y = lp.phi * (K1 + phi2 * phi2 * (K2 + phi2 * (K3 + K4 * phi2)));
- return (xy);
+ return (xy);
}
INVERSE(s_inverse); /* spheroid */
double yc, tol, y2, f, fder;
- (void) P;
+ (void) P;
yc = xy.y;
/* make sure y is inside valid range */
@@ -45,20 +73,20 @@ INVERSE(s_inverse); /* spheroid */ }
for (;;) { /* Newton-Raphson */
- y2 = yc * yc;
- f = (yc * (K1 + y2 * y2 * (K2 + y2 * (K3 + K4 * y2)))) - xy.y;
- fder = C1 + y2 * y2 * (C2 + y2 * (C3 + C4 * y2));
- yc -= tol = f / fder;
- if (fabs(tol) < EPS11) {
- break;
- }
- }
+ y2 = yc * yc;
+ f = (yc * (K1 + y2 * y2 * (K2 + y2 * (K3 + K4 * y2)))) - xy.y;
+ fder = C1 + y2 * y2 * (C2 + y2 * (C3 + C4 * y2));
+ yc -= tol = f / fder;
+ if (fabs(tol) < EPS11) {
+ break;
+ }
+ }
lp.phi = yc;
/* longitude */
- lp.lam = xy.x;
-
- return (lp);
+ lp.lam = xy.x;
+
+ return (lp);
}
FREEUP; if (P) pj_dalloc(P); }
ENTRY0(patterson) P->es = 0.; P->inv = s_inverse; P->fwd = s_forward; ENDENTRY(P)
|
