Fix getTileAtPoint epsilon precision

Fix #1362
This commit is contained in:
Antoine Vandecreme 2017-12-24 10:57:29 +01:00
parent 2155a0d157
commit 517e1feae8
2 changed files with 12 additions and 1 deletions

View File

@ -360,7 +360,7 @@ $.TileSource.prototype = {
if (point.x >= 1) { if (point.x >= 1) {
x = this.getNumTiles(level).x - 1; x = this.getNumTiles(level).x - 1;
} }
var EPSILON = 1e-16; var EPSILON = 1e-15;
if (point.y >= 1 / this.aspectRatio - EPSILON) { if (point.y >= 1 / this.aspectRatio - EPSILON) {
y = this.getNumTiles(level).y - 1; y = this.getNumTiles(level).y - 1;
} }

View File

@ -107,6 +107,17 @@
maxLevel: 0, maxLevel: 0,
}); });
assertTileAtPoint(0, new OpenSeadragon.Point(1, 1239 / 4036), new OpenSeadragon.Point(0, 0)); assertTileAtPoint(0, new OpenSeadragon.Point(1, 1239 / 4036), new OpenSeadragon.Point(0, 0));
// Test for issue #1362
tileSource = new OpenSeadragon.TileSource({
width: 2000,
height: 3033,
tileWidth: 2000,
tileHeight: 3033,
tileOverlap: 0,
maxLevel: 0,
});
assertTileAtPoint(0, new OpenSeadragon.Point(1, 3033 / 2000), new OpenSeadragon.Point(0, 0));
}); });
}()); }());