aboutsummaryrefslogtreecommitdiffstats
path: root/extlib/leaflet/src/geometry/Transformation.js
diff options
context:
space:
mode:
Diffstat (limited to 'extlib/leaflet/src/geometry/Transformation.js')
-rw-r--r--extlib/leaflet/src/geometry/Transformation.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/extlib/leaflet/src/geometry/Transformation.js b/extlib/leaflet/src/geometry/Transformation.js
new file mode 100644
index 00000000..37f40968
--- /dev/null
+++ b/extlib/leaflet/src/geometry/Transformation.js
@@ -0,0 +1,31 @@
+/*
+ * L.Transformation is an utility class to perform simple point transformations through a 2d-matrix.
+ */
+
+L.Transformation = L.Class.extend({
+ initialize: function(/*Number*/ a, /*Number*/ b, /*Number*/ c, /*Number*/ d) {
+ this._a = a;
+ this._b = b;
+ this._c = c;
+ this._d = d;
+ },
+
+ transform: function(point, scale) {
+ return this._transform(point.clone(), scale);
+ },
+
+ // destructive transform (faster)
+ _transform: function(/*Point*/ point, /*Number*/ scale) /*-> Point*/ {
+ scale = scale || 1;
+ point.x = scale * (this._a * point.x + this._b);
+ point.y = scale * (this._c * point.y + this._d);
+ return point;
+ },
+
+ untransform: function(/*Point*/ point, /*Number*/ scale) /*-> Point*/ {
+ scale = scale || 1;
+ return new L.Point(
+ (point.x/scale - this._b) / this._a,
+ (point.y/scale - this._d) / this._c);
+ }
+}); \ No newline at end of file