Geom2 package working with new extent structure

This commit is contained in:
Tim Schaub
2013-09-03 17:52:18 -06:00
parent e6b395e2ee
commit 3faa035de3
4 changed files with 16 additions and 17 deletions

View File

@@ -2,6 +2,7 @@ goog.provide('ol.geom2');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('ol.Extent'); goog.require('ol.Extent');
goog.require('ol.extent');
/** /**
@@ -10,21 +11,19 @@ goog.require('ol.Extent');
* @return {ol.Extent} Extent. * @return {ol.Extent} Extent.
*/ */
ol.geom2.getExtent = function(buf, dim) { ol.geom2.getExtent = function(buf, dim) {
var extent = new Array(2 * dim); var extent = ol.extent.createEmpty(); // TODO: make this accept a dimension
var extentIndex = 0; for (var i = 0; i < dim; ++i) {
var i; extent[0][i] = Infinity;
for (i = 0; i < dim; ++i) { extent[1][i] = -Infinity;
extent[extentIndex++] = Infinity;
extent[extentIndex++] = -Infinity;
} }
var bufArr = buf.getArray(); var bufArr = buf.getArray();
buf.forEachRange(function(start, stop) { buf.forEachRange(function(start, stop) {
var extentIndex, i, j; var i, j, value;
for (i = start; i < stop; i += dim) { for (i = start; i < stop; i += dim) {
extentIndex = 0;
for (j = 0; j < dim; ++j) { for (j = 0; j < dim; ++j) {
extent[extentIndex++] = Math.min(extent[2 * j], bufArr[i + j]); value = bufArr[i + j];
extent[extentIndex++] = Math.max(extent[2 * j + 1], bufArr[i + j]); extent[0][j] = Math.min(extent[0][j], value);
extent[1][j] = Math.max(extent[1][j], value);
} }
} }
}); });

View File

@@ -13,22 +13,22 @@ describe('ol.geom2', function() {
it('returns the expected extent', function() { it('returns the expected extent', function() {
var extent = ol.geom2.getExtent(buf, dim); var extent = ol.geom2.getExtent(buf, dim);
expect(extent).to.eql([0, 10, 1, 11]); expect(extent).to.eql([[0, 1], [10, 11]]);
}); });
it('returns the expect extent in three dimensions', function() { it('returns the expect extent in three dimensions', function() {
var extent = ol.geom2.getExtent(buf, 3); var extent = ol.geom2.getExtent(buf, 3);
expect(extent).to.eql([0, 9, 1, 10, 2, 11]); expect(extent).to.eql([[0, 1, 2], [9, 10, 11]]);
}); });
it('returns the expect extent in four dimensions', function() { it('returns the expect extent in four dimensions', function() {
var extent = ol.geom2.getExtent(buf, 4); var extent = ol.geom2.getExtent(buf, 4);
expect(extent).to.eql([0, 8, 1, 9, 2, 10, 3, 11]); expect(extent).to.eql([[0, 1, 2, 3], [8, 9, 10, 11]]);
}); });
it('returns the expect extent in six dimensions', function() { it('returns the expect extent in six dimensions', function() {
var extent = ol.geom2.getExtent(buf, 6); var extent = ol.geom2.getExtent(buf, 6);
expect(extent).to.eql([0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11]); expect(extent).to.eql([[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]]);
}); });
}); });

View File

@@ -189,7 +189,7 @@ describe('ol.geom2.LineStringCollection', function() {
describe('getExtent', function() { describe('getExtent', function() {
it('returns the expected extent', function() { it('returns the expected extent', function() {
expect(lsc.getExtent()).to.eql([0, 2, 1, 3]); expect(lsc.getExtent()).to.eql([[0, 1], [2, 3]]);
}); });
}); });
@@ -268,7 +268,7 @@ describe('ol.geom2.LineStringCollection', function() {
describe('getExtent', function() { describe('getExtent', function() {
it('returns the expected value', function() { it('returns the expected value', function() {
expect(lsc.getExtent()).to.eql([0, 8, 1, 9]); expect(lsc.getExtent()).to.eql([[0, 1], [8, 9]]);
}); });
}); });

View File

@@ -198,7 +198,7 @@ describe('ol.geom2.PointCollection', function() {
it('returns the expected value', function() { it('returns the expected value', function() {
var extent = pc.getExtent(); var extent = pc.getExtent();
expect(extent).to.eql([0, 2, 1, 3]); expect(extent).to.eql([[0, 1], [2, 3]]);
}); });
}); });