32 lines
868 B
JavaScript
32 lines
868 B
JavaScript
/*
|
|
* 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);
|
|
}
|
|
});
|