summaryrefslogtreecommitdiff
path: root/src/projection/transverseMercator.js
diff options
context:
space:
mode:
authorPirate Praveen <praveen@debian.org>2017-10-09 11:57:35 +0530
committerPirate Praveen <praveen@debian.org>2017-10-09 11:57:35 +0530
commit3db5c79f87119a5b46ab63cbfa6050700a978117 (patch)
treece0bc40cb6a86a7c0e20c6c9cbde83e18b1d9c44 /src/projection/transverseMercator.js
Import Upstream version 1.9.0
Diffstat (limited to 'src/projection/transverseMercator.js')
-rw-r--r--src/projection/transverseMercator.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/projection/transverseMercator.js b/src/projection/transverseMercator.js
new file mode 100644
index 0000000..822a3a4
--- /dev/null
+++ b/src/projection/transverseMercator.js
@@ -0,0 +1,27 @@
+import {atan, exp, halfPi, log, tan} from "../math";
+import {mercatorProjection} from "./mercator";
+
+export function transverseMercatorRaw(lambda, phi) {
+ return [log(tan((halfPi + phi) / 2)), -lambda];
+}
+
+transverseMercatorRaw.invert = function(x, y) {
+ return [-y, 2 * atan(exp(x)) - halfPi];
+};
+
+export default function() {
+ var m = mercatorProjection(transverseMercatorRaw),
+ center = m.center,
+ rotate = m.rotate;
+
+ m.center = function(_) {
+ return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);
+ };
+
+ m.rotate = function(_) {
+ return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);
+ };
+
+ return rotate([0, 0, 90])
+ .scale(159.155);
+}