Add ol.Rectangle
This commit is contained in:
67
src/ol/rectangle.js
Normal file
67
src/ol/rectangle.js
Normal file
@@ -0,0 +1,67 @@
|
||||
goog.provide('ol.Rectangle');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.math.Coordinate');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {number} minX Minimum X.
|
||||
* @param {number} minY Minimum Y.
|
||||
* @param {number} maxX Maximum X.
|
||||
* @param {number} maxY Maximum Y.
|
||||
*/
|
||||
ol.Rectangle = function(minX, minY, maxX, maxY) {
|
||||
|
||||
goog.asserts.assert(minX <= maxX);
|
||||
goog.asserts.assert(minY <= maxY);
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.minX = minX;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.minY = minY;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.maxX = maxX;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.maxY = maxY;
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.Rectangle} Clone.
|
||||
*/
|
||||
ol.Rectangle.prototype.clone = function() {
|
||||
return new ol.Rectangle(this.minX, this.minY, this.maxX, this.maxY);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {goog.math.Coordinate} coordinate Coordinate.
|
||||
* @return {boolean} Contains.
|
||||
*/
|
||||
ol.Rectangle.prototype.contains = function(coordinate) {
|
||||
return this.minX <= coordinate.x && coordinate.x <= this.maxX &&
|
||||
this.minY <= coordinate.y && coordinate.y <= this.maxY;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {goog.math.Coordinate} Center.
|
||||
*/
|
||||
ol.Rectangle.prototype.getCenter = function() {
|
||||
return new goog.math.Coordinate(
|
||||
(this.minX + this.maxX) / 2, (this.minY + this.maxY) / 2);
|
||||
};
|
||||
58
src/ol/rectangle_test.js
Normal file
58
src/ol/rectangle_test.js
Normal file
@@ -0,0 +1,58 @@
|
||||
goog.require('goog.math.Coordinate');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('ol.Rectangle');
|
||||
|
||||
|
||||
function testCenter() {
|
||||
var rectangle = new ol.Rectangle(1, 2, 3, 4);
|
||||
var center = rectangle.getCenter();
|
||||
assertEquals(2, center.x);
|
||||
assertEquals(3, center.y);
|
||||
}
|
||||
|
||||
|
||||
function testClone() {
|
||||
var rectangle = new ol.Rectangle(1, 2, 3, 4);
|
||||
var clonedRectangle = rectangle.clone();
|
||||
assertTrue(clonedRectangle instanceof ol.Rectangle);
|
||||
assertFalse(clonedRectangle === rectangle);
|
||||
assertEquals(rectangle.minX, clonedRectangle.minX);
|
||||
assertEquals(rectangle.minY, clonedRectangle.minY);
|
||||
assertEquals(rectangle.maxX, clonedRectangle.maxX);
|
||||
assertEquals(rectangle.maxY, clonedRectangle.maxY);
|
||||
}
|
||||
|
||||
|
||||
function testContainsPositive() {
|
||||
var rectangle = new ol.Rectangle(1, 2, 3, 4);
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(1, 2)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(1, 3)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(1, 4)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(2, 2)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(2, 3)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(2, 4)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(3, 2)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(3, 3)));
|
||||
assertTrue(rectangle.contains(new goog.math.Coordinate(3, 4)));
|
||||
}
|
||||
|
||||
|
||||
function testContainsNegative() {
|
||||
var rectangle = new ol.Rectangle(1, 2, 3, 4);
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(0, 1)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(0, 2)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(0, 3)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(0, 4)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(0, 5)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(1, 1)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(1, 5)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(2, 1)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(2, 5)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(3, 1)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(3, 5)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(4, 1)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(4, 2)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(4, 3)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(4, 4)));
|
||||
assertFalse(rectangle.contains(new goog.math.Coordinate(4, 5)));
|
||||
}
|
||||
Reference in New Issue
Block a user