Named exports from ol/geom/flat/contains
This commit is contained in:
@@ -12,7 +12,7 @@ import SimpleGeometry from '../geom/SimpleGeometry.js';
|
|||||||
import {linearRingss as linearRingssArea} from '../geom/flat/area.js';
|
import {linearRingss as linearRingssArea} from '../geom/flat/area.js';
|
||||||
import _ol_geom_flat_center_ from '../geom/flat/center.js';
|
import _ol_geom_flat_center_ from '../geom/flat/center.js';
|
||||||
import _ol_geom_flat_closest_ from '../geom/flat/closest.js';
|
import _ol_geom_flat_closest_ from '../geom/flat/closest.js';
|
||||||
import _ol_geom_flat_contains_ from '../geom/flat/contains.js';
|
import {linearRingssContainsXY} from '../geom/flat/contains.js';
|
||||||
import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js';
|
import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js';
|
||||||
import _ol_geom_flat_inflate_ from '../geom/flat/inflate.js';
|
import _ol_geom_flat_inflate_ from '../geom/flat/inflate.js';
|
||||||
import _ol_geom_flat_interiorpoint_ from '../geom/flat/interiorpoint.js';
|
import _ol_geom_flat_interiorpoint_ from '../geom/flat/interiorpoint.js';
|
||||||
@@ -151,8 +151,7 @@ MultiPolygon.prototype.closestPointXY = function(x, y, closestPoint, minSquaredD
|
|||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
MultiPolygon.prototype.containsXY = function(x, y) {
|
MultiPolygon.prototype.containsXY = function(x, y) {
|
||||||
return _ol_geom_flat_contains_.linearRingssContainsXY(
|
return linearRingssContainsXY(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y);
|
||||||
this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import SimpleGeometry from '../geom/SimpleGeometry.js';
|
|||||||
import {offset as sphereOffset} from '../sphere.js';
|
import {offset as sphereOffset} from '../sphere.js';
|
||||||
import {linearRings as linearRingsArea} from '../geom/flat/area.js';
|
import {linearRings as linearRingsArea} from '../geom/flat/area.js';
|
||||||
import _ol_geom_flat_closest_ from '../geom/flat/closest.js';
|
import _ol_geom_flat_closest_ from '../geom/flat/closest.js';
|
||||||
import _ol_geom_flat_contains_ from '../geom/flat/contains.js';
|
import {linearRingsContainsXY} from '../geom/flat/contains.js';
|
||||||
import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js';
|
import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js';
|
||||||
import _ol_geom_flat_inflate_ from '../geom/flat/inflate.js';
|
import _ol_geom_flat_inflate_ from '../geom/flat/inflate.js';
|
||||||
import _ol_geom_flat_interiorpoint_ from '../geom/flat/interiorpoint.js';
|
import _ol_geom_flat_interiorpoint_ from '../geom/flat/interiorpoint.js';
|
||||||
@@ -141,8 +141,7 @@ Polygon.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistan
|
|||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
Polygon.prototype.containsXY = function(x, y) {
|
Polygon.prototype.containsXY = function(x, y) {
|
||||||
return _ol_geom_flat_contains_.linearRingsContainsXY(
|
return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);
|
||||||
this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
* @module ol/geom/flat/contains
|
* @module ol/geom/flat/contains
|
||||||
*/
|
*/
|
||||||
import {forEachCorner} from '../../extent.js';
|
import {forEachCorner} from '../../extent.js';
|
||||||
const _ol_geom_flat_contains_ = {};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -13,18 +12,17 @@ const _ol_geom_flat_contains_ = {};
|
|||||||
* @param {ol.Extent} extent Extent.
|
* @param {ol.Extent} extent Extent.
|
||||||
* @return {boolean} Contains extent.
|
* @return {boolean} Contains extent.
|
||||||
*/
|
*/
|
||||||
_ol_geom_flat_contains_.linearRingContainsExtent = function(flatCoordinates, offset, end, stride, extent) {
|
export function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {
|
||||||
const outside = forEachCorner(extent,
|
const outside = forEachCorner(extent,
|
||||||
/**
|
/**
|
||||||
* @param {ol.Coordinate} coordinate Coordinate.
|
* @param {ol.Coordinate} coordinate Coordinate.
|
||||||
* @return {boolean} Contains (x, y).
|
* @return {boolean} Contains (x, y).
|
||||||
*/
|
*/
|
||||||
function(coordinate) {
|
function(coordinate) {
|
||||||
return !_ol_geom_flat_contains_.linearRingContainsXY(flatCoordinates,
|
return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);
|
||||||
offset, end, stride, coordinate[0], coordinate[1]);
|
|
||||||
});
|
});
|
||||||
return !outside;
|
return !outside;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,7 +34,7 @@ _ol_geom_flat_contains_.linearRingContainsExtent = function(flatCoordinates, off
|
|||||||
* @param {number} y Y.
|
* @param {number} y Y.
|
||||||
* @return {boolean} Contains (x, y).
|
* @return {boolean} Contains (x, y).
|
||||||
*/
|
*/
|
||||||
_ol_geom_flat_contains_.linearRingContainsXY = function(flatCoordinates, offset, end, stride, x, y) {
|
export function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {
|
||||||
// http://geomalgorithms.com/a03-_inclusion.html
|
// http://geomalgorithms.com/a03-_inclusion.html
|
||||||
// Copyright 2000 softSurfer, 2012 Dan Sunday
|
// Copyright 2000 softSurfer, 2012 Dan Sunday
|
||||||
// This code may be freely used and modified for any purpose
|
// This code may be freely used and modified for any purpose
|
||||||
@@ -61,7 +59,7 @@ _ol_geom_flat_contains_.linearRingContainsXY = function(flatCoordinates, offset,
|
|||||||
y1 = y2;
|
y1 = y2;
|
||||||
}
|
}
|
||||||
return wn !== 0;
|
return wn !== 0;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,22 +71,20 @@ _ol_geom_flat_contains_.linearRingContainsXY = function(flatCoordinates, offset,
|
|||||||
* @param {number} y Y.
|
* @param {number} y Y.
|
||||||
* @return {boolean} Contains (x, y).
|
* @return {boolean} Contains (x, y).
|
||||||
*/
|
*/
|
||||||
_ol_geom_flat_contains_.linearRingsContainsXY = function(flatCoordinates, offset, ends, stride, x, y) {
|
export function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {
|
||||||
if (ends.length === 0) {
|
if (ends.length === 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!_ol_geom_flat_contains_.linearRingContainsXY(
|
if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {
|
||||||
flatCoordinates, offset, ends[0], stride, x, y)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (let i = 1, ii = ends.length; i < ii; ++i) {
|
for (let i = 1, ii = ends.length; i < ii; ++i) {
|
||||||
if (_ol_geom_flat_contains_.linearRingContainsXY(
|
if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {
|
||||||
flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -100,18 +96,16 @@ _ol_geom_flat_contains_.linearRingsContainsXY = function(flatCoordinates, offset
|
|||||||
* @param {number} y Y.
|
* @param {number} y Y.
|
||||||
* @return {boolean} Contains (x, y).
|
* @return {boolean} Contains (x, y).
|
||||||
*/
|
*/
|
||||||
_ol_geom_flat_contains_.linearRingssContainsXY = function(flatCoordinates, offset, endss, stride, x, y) {
|
export function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {
|
||||||
if (endss.length === 0) {
|
if (endss.length === 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (let i = 0, ii = endss.length; i < ii; ++i) {
|
for (let i = 0, ii = endss.length; i < ii; ++i) {
|
||||||
const ends = endss[i];
|
const ends = endss[i];
|
||||||
if (_ol_geom_flat_contains_.linearRingsContainsXY(
|
if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {
|
||||||
flatCoordinates, offset, ends, stride, x, y)) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
offset = ends[ends.length - 1];
|
offset = ends[ends.length - 1];
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
}
|
||||||
export default _ol_geom_flat_contains_;
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @module ol/geom/flat/interiorpoint
|
* @module ol/geom/flat/interiorpoint
|
||||||
*/
|
*/
|
||||||
import {numberSafeCompareFunction} from '../../array.js';
|
import {numberSafeCompareFunction} from '../../array.js';
|
||||||
import _ol_geom_flat_contains_ from '../flat/contains.js';
|
import {linearRingsContainsXY} from '../flat/contains.js';
|
||||||
const _ol_geom_flat_interiorpoint_ = {};
|
const _ol_geom_flat_interiorpoint_ = {};
|
||||||
|
|
||||||
|
|
||||||
@@ -52,8 +52,7 @@ _ol_geom_flat_interiorpoint_.linearRings = function(flatCoordinates, offset,
|
|||||||
const segmentLength = Math.abs(x2 - x1);
|
const segmentLength = Math.abs(x2 - x1);
|
||||||
if (segmentLength > maxSegmentLength) {
|
if (segmentLength > maxSegmentLength) {
|
||||||
x = (x1 + x2) / 2;
|
x = (x1 + x2) / 2;
|
||||||
if (_ol_geom_flat_contains_.linearRingsContainsXY(
|
if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {
|
||||||
flatCoordinates, offset, ends, stride, x, y)) {
|
|
||||||
pointX = x;
|
pointX = x;
|
||||||
maxSegmentLength = segmentLength;
|
maxSegmentLength = segmentLength;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @module ol/geom/flat/intersectsextent
|
* @module ol/geom/flat/intersectsextent
|
||||||
*/
|
*/
|
||||||
import {containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment} from '../../extent.js';
|
import {containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment} from '../../extent.js';
|
||||||
import _ol_geom_flat_contains_ from '../flat/contains.js';
|
import {linearRingContainsXY, linearRingContainsExtent} from '../flat/contains.js';
|
||||||
import _ol_geom_flat_segments_ from '../flat/segments.js';
|
import _ol_geom_flat_segments_ from '../flat/segments.js';
|
||||||
const _ol_geom_flat_intersectsextent_ = {};
|
const _ol_geom_flat_intersectsextent_ = {};
|
||||||
|
|
||||||
@@ -78,20 +78,16 @@ _ol_geom_flat_intersectsextent_.linearRing = function(flatCoordinates, offset, e
|
|||||||
flatCoordinates, offset, end, stride, extent)) {
|
flatCoordinates, offset, end, stride, extent)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_ol_geom_flat_contains_.linearRingContainsXY(
|
if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {
|
||||||
flatCoordinates, offset, end, stride, extent[0], extent[1])) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_ol_geom_flat_contains_.linearRingContainsXY(
|
if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {
|
||||||
flatCoordinates, offset, end, stride, extent[0], extent[3])) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_ol_geom_flat_contains_.linearRingContainsXY(
|
if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {
|
||||||
flatCoordinates, offset, end, stride, extent[2], extent[1])) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_ol_geom_flat_contains_.linearRingContainsXY(
|
if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {
|
||||||
flatCoordinates, offset, end, stride, extent[2], extent[3])) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -115,8 +111,7 @@ _ol_geom_flat_intersectsextent_.linearRings = function(flatCoordinates, offset,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for (let i = 1, ii = ends.length; i < ii; ++i) {
|
for (let i = 1, ii = ends.length; i < ii; ++i) {
|
||||||
if (_ol_geom_flat_contains_.linearRingContainsExtent(
|
if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {
|
||||||
flatCoordinates, ends[i - 1], ends[i], stride, extent)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {equals} from '../../array.js';
|
|||||||
import {asArray} from '../../color.js';
|
import {asArray} from '../../color.js';
|
||||||
import {intersects} from '../../extent.js';
|
import {intersects} from '../../extent.js';
|
||||||
import {isEmpty} from '../../obj.js';
|
import {isEmpty} from '../../obj.js';
|
||||||
import _ol_geom_flat_contains_ from '../../geom/flat/contains.js';
|
import {linearRingContainsXY} from '../../geom/flat/contains.js';
|
||||||
import _ol_geom_flat_orient_ from '../../geom/flat/orient.js';
|
import _ol_geom_flat_orient_ from '../../geom/flat/orient.js';
|
||||||
import _ol_geom_flat_transform_ from '../../geom/flat/transform.js';
|
import _ol_geom_flat_transform_ from '../../geom/flat/transform.js';
|
||||||
import _ol_render_webgl_polygonreplay_defaultshader_ from '../webgl/polygonreplay/defaultshader.js';
|
import _ol_render_webgl_polygonreplay_defaultshader_ from '../webgl/polygonreplay/defaultshader.js';
|
||||||
@@ -663,8 +663,7 @@ WebGLPolygonReplay.prototype.getPointsInTriangle_ = function(p0, p1, p2, rtree,
|
|||||||
if (typeof p === 'object' && (!opt_reflex || p.reflex)) {
|
if (typeof p === 'object' && (!opt_reflex || p.reflex)) {
|
||||||
if ((p.x !== p0.x || p.y !== p0.y) && (p.x !== p1.x || p.y !== p1.y) &&
|
if ((p.x !== p0.x || p.y !== p0.y) && (p.x !== p1.x || p.y !== p1.y) &&
|
||||||
(p.x !== p2.x || p.y !== p2.y) && result.indexOf(p) === -1 &&
|
(p.x !== p2.x || p.y !== p2.y) && result.indexOf(p) === -1 &&
|
||||||
_ol_geom_flat_contains_.linearRingContainsXY([p0.x, p0.y, p1.x, p1.y,
|
linearRingContainsXY([p0.x, p0.y, p1.x, p1.y, p2.x, p2.y], 0, 6, 2, p.x, p.y)) {
|
||||||
p2.x, p2.y], 0, 6, 2, p.x, p.y)) {
|
|
||||||
result.push(p);
|
result.push(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import _ol_geom_flat_contains_ from '../../../../../src/ol/geom/flat/contains.js';
|
import {linearRingContainsXY} from '../../../../../src/ol/geom/flat/contains.js';
|
||||||
|
|
||||||
|
|
||||||
describe('ol.geom.flat.contains', function() {
|
describe('ol.geom.flat.contains', function() {
|
||||||
@@ -11,27 +11,27 @@ describe('ol.geom.flat.contains', function() {
|
|||||||
describe('ol.geom.flat.contains.linearRingContainsXY', function() {
|
describe('ol.geom.flat.contains.linearRingContainsXY', function() {
|
||||||
|
|
||||||
it('returns true for point inside a simple polygon', function() {
|
it('returns true for point inside a simple polygon', function() {
|
||||||
expect(_ol_geom_flat_contains_.linearRingContainsXY(
|
expect(linearRingContainsXY(
|
||||||
flatCoordinatesSimple, 0, flatCoordinatesSimple.length, 2, 0.5, 0.5)).to.be(true);
|
flatCoordinatesSimple, 0, flatCoordinatesSimple.length, 2, 0.5, 0.5)).to.be(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns false for point outside a simple polygon', function() {
|
it('returns false for point outside a simple polygon', function() {
|
||||||
expect(_ol_geom_flat_contains_.linearRingContainsXY(
|
expect(linearRingContainsXY(
|
||||||
flatCoordinatesSimple, 0, flatCoordinatesSimple.length, 2, 1.5, 1.5)).to.be(false);
|
flatCoordinatesSimple, 0, flatCoordinatesSimple.length, 2, 1.5, 1.5)).to.be(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns true for point inside a non-simple polygon', function() {
|
it('returns true for point inside a non-simple polygon', function() {
|
||||||
expect(_ol_geom_flat_contains_.linearRingContainsXY(
|
expect(linearRingContainsXY(
|
||||||
flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 1, 1)).to.be(true);
|
flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 1, 1)).to.be(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns true for point inside an overlap of a non-simple polygon', function() {
|
it('returns true for point inside an overlap of a non-simple polygon', function() {
|
||||||
expect(_ol_geom_flat_contains_.linearRingContainsXY(
|
expect(linearRingContainsXY(
|
||||||
flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 1.5, 2.5)).to.be(true);
|
flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 1.5, 2.5)).to.be(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns false for a point inside a hole of a non-simple polygon', function() {
|
it('returns false for a point inside a hole of a non-simple polygon', function() {
|
||||||
expect(_ol_geom_flat_contains_.linearRingContainsXY(
|
expect(linearRingContainsXY(
|
||||||
flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 2.5, 1.5)).to.be(false);
|
flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 2.5, 1.5)).to.be(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user