Function for applying a 2d transform to an extent

This commit is contained in:
Tim Schaub
2014-02-25 21:49:05 -07:00
parent 2750f53fda
commit af1bd0228c
2 changed files with 76 additions and 0 deletions

View File

@@ -467,9 +467,50 @@ describe('ol.extent', function() {
});
describe('transform2D()', function() {
var extent;
beforeEach(function() {
extent = [-180, -90, 180, 90];
});
it('applies a translate transform', function() {
var mat = goog.vec.Mat4.createNumber();
goog.vec.Mat4.makeTranslate(mat, 10, 20, 0);
var transformed = ol.extent.transform2D(extent, mat);
expect(transformed).to.eql([-170, -70, 190, 110]);
});
it('applies a rotate transform', function() {
var mat = goog.vec.Mat4.createNumber();
goog.vec.Mat4.makeRotateZ(mat, Math.PI / 2);
var transformed = ol.extent.transform2D(extent, mat);
expect(transformed[0]).to.roughlyEqual(-90, 1e-5);
expect(transformed[1]).to.roughlyEqual(-180, 1e-5);
expect(transformed[2]).to.roughlyEqual(90, 1e-5);
expect(transformed[3]).to.roughlyEqual(180, 1e-5);
});
it('does not modify original', function() {
var mat = goog.vec.Mat4.createNumber();
goog.vec.Mat4.makeRotateZ(mat, Math.PI / 2);
ol.extent.transform2D(extent, mat);
expect(extent).to.eql([-180, -90, 180, 90]);
});
it('accepts an extent to modify', function() {
var mat = goog.vec.Mat4.createNumber();
goog.vec.Mat4.makeScale(mat, 2, 0.5);
ol.extent.transform2D(extent, mat, extent);
expect(extent).to.eql([-360, -45, 360, 45]);
});
});
});
goog.require('goog.vec.Mat4');
goog.require('ol.extent');
goog.require('ol.extent.Relationship');
goog.require('ol.proj');