Add epsilon parameter to geoVecEqual

This commit is contained in:
Bryan Housel
2018-01-08 17:04:30 -05:00
parent ea9643e08b
commit 49eb46fefb
2 changed files with 11 additions and 3 deletions

View File

@@ -1,6 +1,10 @@
// vector equals
export function geoVecEqual(a, b) {
return (a[0] === b[0]) && (a[1] === b[1]);
export function geoVecEqual(a, b, epsilon) {
if (epsilon) {
return (Math.abs(a[0] - b[0]) <= epsilon) && (Math.abs(a[1] - b[1]) <= epsilon);
} else {
return (a[0] === b[0]) && (a[1] === b[1]);
}
}
// vector addition

View File

@@ -1,11 +1,15 @@
describe('iD.geo - vector', function() {
describe('geoVecEqual', function() {
it('tests vectors for equality', function() {
it('tests vectors for exact equality', function() {
expect(iD.geoVecEqual([1, 2], [1, 2])).to.be.true;
expect(iD.geoVecEqual([1, 2], [1, 0])).to.be.false;
expect(iD.geoVecEqual([1, 2], [2, 1])).to.be.false;
});
it('tests vectors for equality within epsilon', function() {
expect(iD.geoVecEqual([1, 2], [1.0000001, 2.0000001], 1e-5)).to.be.true;
expect(iD.geoVecEqual([1, 2], [1.0000001, 2.0000001], 1e-8)).to.be.false;
});
});
describe('geoVecAdd', function() {