Add ol.geom.flat.transform.translate
This commit is contained in:
@@ -22,7 +22,7 @@ ol.geom.flat.transform.transform2D =
|
|||||||
var m13 = goog.vec.Mat4.getElement(transform, 1, 3);
|
var m13 = goog.vec.Mat4.getElement(transform, 1, 3);
|
||||||
var dest = goog.isDef(opt_dest) ? opt_dest : [];
|
var dest = goog.isDef(opt_dest) ? opt_dest : [];
|
||||||
var i = 0;
|
var i = 0;
|
||||||
var j, jj;
|
var j;
|
||||||
for (j = offset; j < end; j += stride) {
|
for (j = offset; j < end; j += stride) {
|
||||||
var x = flatCoordinates[j];
|
var x = flatCoordinates[j];
|
||||||
var y = flatCoordinates[j + 1];
|
var y = flatCoordinates[j + 1];
|
||||||
@@ -34,3 +34,32 @@ ol.geom.flat.transform.transform2D =
|
|||||||
}
|
}
|
||||||
return dest;
|
return dest;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
|
* @param {number} offset Offset.
|
||||||
|
* @param {number} end End.
|
||||||
|
* @param {number} stride Stride.
|
||||||
|
* @param {number} deltaX Delta X.
|
||||||
|
* @param {number} deltaY Delta Y.
|
||||||
|
* @param {Array.<number>=} opt_dest Destination.
|
||||||
|
* @return {Array.<number>} Transformed coordinates.
|
||||||
|
*/
|
||||||
|
ol.geom.flat.transform.translate =
|
||||||
|
function(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {
|
||||||
|
var dest = goog.isDef(opt_dest) ? opt_dest : [];
|
||||||
|
var i = 0;
|
||||||
|
var j, k;
|
||||||
|
for (j = offset; j < end; j += stride) {
|
||||||
|
dest[i++] = flatCoordinates[j] + deltaX;
|
||||||
|
dest[i++] = flatCoordinates[j + 1] + deltaY;
|
||||||
|
for (k = j + 2; k < j + stride; ++k) {
|
||||||
|
dest[i++] = flatCoordinates[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (goog.isDef(opt_dest) && dest.length != i) {
|
||||||
|
dest.length = i;
|
||||||
|
}
|
||||||
|
return dest;
|
||||||
|
};
|
||||||
|
|||||||
+16
@@ -62,6 +62,22 @@ describe('ol.geom.flat.transform', function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('ol.geom.flat.transform.translate', function() {
|
||||||
|
it('translates the coordinates array', function() {
|
||||||
|
var multiPolygon = new ol.geom.MultiPolygon([
|
||||||
|
[[[0, 0, 2], [0, 1, 2], [1, 1, 2], [1, 0, 2], [0, 0, 2]]],
|
||||||
|
[[[2, 2, 3], [2, 3, 3], [3, 3, 3], [3, 2, 3], [2, 2, 3]]]]);
|
||||||
|
var flatCoordinates = multiPolygon.getFlatCoordinates();
|
||||||
|
var deltaX = 1;
|
||||||
|
var deltaY = 2;
|
||||||
|
ol.geom.flat.transform.translate(flatCoordinates, 0,
|
||||||
|
flatCoordinates.length, multiPolygon.getStride(),
|
||||||
|
deltaX, deltaY, flatCoordinates);
|
||||||
|
expect(flatCoordinates).to.eql([
|
||||||
|
1, 2, 2, 1, 3, 2, 2, 3, 2, 2, 2, 2, 1, 2, 2,
|
||||||
|
3, 4, 3, 3, 5, 3, 4, 5, 3, 4, 4, 3, 3, 4, 3]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Reference in New Issue
Block a user