Testing segment intersection with extent

If needed, this function can be modified to take two additional coorinates that will be set to the intersection points.
This commit is contained in:
Tim Schaub
2014-02-22 18:39:04 -07:00
parent cb11959f01
commit 6b018bbaf9
2 changed files with 178 additions and 0 deletions

View File

@@ -300,6 +300,131 @@ describe('ol.extent', function() {
});
});
describe('segmentIntersects()', function() {
var extent = [-180, -90, 180, 90];
var north = [0, 100];
var northeast = [190, 100];
var east = [190, 0];
var southeast = [190, -100];
var south = [0, -100];
var southwest = [-190, -100];
var west = [-190, 0];
var northwest = [-190, 100];
var center = [0, 0];
var top = [0, 90];
var right = [180, 0];
var bottom = [-90, 0];
var left = [-180, 0];
var inside = [10, 10];
it('returns true if contained', function() {
var intersects = ol.extent.segmentIntersects(extent, center, inside);
expect(intersects).to.be(true);
});
it('returns true if crosses top', function() {
var intersects = ol.extent.segmentIntersects(extent, center, north);
expect(intersects).to.be(true);
});
it('returns true if crosses right', function() {
var intersects = ol.extent.segmentIntersects(extent, center, east);
expect(intersects).to.be(true);
});
it('returns true if crosses bottom', function() {
var intersects = ol.extent.segmentIntersects(extent, center, south);
expect(intersects).to.be(true);
});
it('returns true if crosses left', function() {
var intersects = ol.extent.segmentIntersects(extent, center, west);
expect(intersects).to.be(true);
});
it('returns false if above', function() {
var intersects = ol.extent.segmentIntersects(extent, northwest, north);
expect(intersects).to.be(false);
});
it('returns false if right', function() {
var intersects = ol.extent.segmentIntersects(extent, northeast, east);
expect(intersects).to.be(false);
});
it('returns false if below', function() {
var intersects = ol.extent.segmentIntersects(extent, south, southwest);
expect(intersects).to.be(false);
});
it('returns false if left', function() {
var intersects = ol.extent.segmentIntersects(extent, west, southwest);
expect(intersects).to.be(false);
});
it('returns true if crosses top to bottom', function() {
var intersects = ol.extent.segmentIntersects(extent, north, south);
expect(intersects).to.be(true);
});
it('returns true if crosses bottom to top', function() {
var intersects = ol.extent.segmentIntersects(extent, south, north);
expect(intersects).to.be(true);
});
it('returns true if crosses left to right', function() {
var intersects = ol.extent.segmentIntersects(extent, west, east);
expect(intersects).to.be(true);
});
it('returns true if crosses right to left', function() {
var intersects = ol.extent.segmentIntersects(extent, east, west);
expect(intersects).to.be(true);
});
it('returns true if crosses northwest to east', function() {
var intersects = ol.extent.segmentIntersects(extent, northwest, east);
expect(intersects).to.be(true);
});
it('returns true if crosses south to west', function() {
var intersects = ol.extent.segmentIntersects(extent, south, west);
expect(intersects).to.be(true);
});
it('returns true if touches top', function() {
var intersects = ol.extent.segmentIntersects(extent, northwest, top);
expect(intersects).to.be(true);
});
it('returns true if touches right', function() {
var intersects = ol.extent.segmentIntersects(extent, southeast, right);
expect(intersects).to.be(true);
});
it('returns true if touches bottom', function() {
var intersects = ol.extent.segmentIntersects(extent, bottom, south);
expect(intersects).to.be(true);
});
it('returns true if touches left', function() {
var intersects = ol.extent.segmentIntersects(extent, left, west);
expect(intersects).to.be(true);
});
it('works for zero length inside', function() {
var intersects = ol.extent.segmentIntersects(extent, center, center);
expect(intersects).to.be(true);
});
it('works for zero length outside', function() {
var intersects = ol.extent.segmentIntersects(extent, north, north);
expect(intersects).to.be(false);
});
});
describe('transform', function() {
it('does transform', function() {