/* * L.Point represents a point with x and y coordinates. */ L.Point = function(/*Number*/ x, /*Number*/ y, /*Boolean*/ round) { this.x = (round ? Math.round(x) : x); this.y = (round ? Math.round(y) : y); }; L.Point.prototype = { add: function(point) { return this.clone()._add(point); }, _add: function(point) { this.x += point.x; this.y += point.y; return this; }, subtract: function(point) { return this.clone()._subtract(point); }, // destructive subtract (faster) _subtract: function(point) { this.x -= point.x; this.y -= point.y; return this; }, divideBy: function(num, round) { return new L.Point(this.x/num, this.y/num, round); }, multiplyBy: function(num) { return new L.Point(this.x * num, this.y * num); }, distanceTo: function(point) { var x = point.x - this.x, y = point.y - this.y; return Math.sqrt(x*x + y*y); }, round: function() { return this.clone()._round(); }, // destructive round _round: function() { this.x = Math.round(this.x); this.y = Math.round(this.y); return this; }, clone: function() { return new L.Point(this.x, this.y); }, toString: function() { return 'Point(' + L.Util.formatNum(this.x) + ', ' + L.Util.formatNum(this.y) + ')'; } };