New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@math.gl/polygon

Package Overview
Dependencies
Maintainers
4
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@math.gl/polygon - npm Package Compare versions

Comparing version 3.2.0-alpha.3 to 3.2.0-alpha.4

9

dist/es5/cut-by-grid.d.ts

@@ -1,6 +0,6 @@

type Polygon = Array<number> | {positions: Array<number>, holeIndices: Array<number>};
type Polygon = {positions: Array<number>, holeIndices?: Array<number>, vertexTypes?: Array<Number>};
export function cutPolylineByGrid(
positions : Array<number>,
options : {
options? : {
size? : number,

@@ -18,7 +18,8 @@ broken? : boolean,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
gridResolution? : number,
gridOffset? : [number, number]
gridOffset? : [number, number],
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -70,2 +70,5 @@ "use strict";

var TYPE_INSIDE = 0;
var TYPE_BORDER = 1;
function cutPolygonByGrid(positions, holeIndices) {

@@ -83,6 +86,9 @@ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

_options$gridOffset2 = options.gridOffset,
gridOffset = _options$gridOffset2 === void 0 ? [0, 0] : _options$gridOffset2;
gridOffset = _options$gridOffset2 === void 0 ? [0, 0] : _options$gridOffset2,
_options$edgeTypes = options.edgeTypes,
edgeTypes = _options$edgeTypes === void 0 ? false : _options$edgeTypes;
var result = [];
var queue = [{
pos: positions,
types: edgeTypes && new Array(positions.length / size).fill(TYPE_BORDER),
holes: holeIndices || []

@@ -96,2 +102,3 @@ }];

pos = _queue$shift.pos,
types = _queue$shift.types,
holes = _queue$shift.holes;

@@ -104,9 +111,11 @@

if (code) {
var parts = bisectPolygon(pos, size, 0, holes[0] || pos.length, cell, code);
var parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);
var polygonLow = {
pos: parts[0],
pos: parts[0].pos,
types: parts[0].types,
holes: []
};
var polygonHigh = {
pos: parts[1],
pos: parts[1].pos,
types: parts[1].types,
holes: []

@@ -117,7 +126,11 @@ };

for (var i = 0; i < holes.length; i++) {
parts = bisectPolygon(pos, size, holes[i], holes[i + 1] || pos.length, cell, code);
parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);
if (parts[0]) {
polygonLow.holes.push(polygonLow.pos.length);
polygonLow.pos = polygonLow.pos.concat(parts[0]);
polygonLow.pos = polygonLow.pos.concat(parts[0].pos);
if (edgeTypes) {
polygonLow.types = polygonLow.types.concat(parts[0].types);
}
}

@@ -127,10 +140,23 @@

polygonHigh.holes.push(polygonHigh.pos.length);
polygonHigh.pos = polygonHigh.pos.concat(parts[1]);
polygonHigh.pos = polygonHigh.pos.concat(parts[1].pos);
if (edgeTypes) {
polygonHigh.types = polygonHigh.types.concat(parts[1].types);
}
}
}
} else {
result.push(holes.length ? {
positions: pos,
holeIndices: holes
} : pos);
var polygon = {
positions: pos
};
if (edgeTypes) {
polygon.edgeTypes = types;
}
if (holes.length) {
polygon.holeIndices = holes;
}
result.push(polygon);
}

@@ -142,11 +168,15 @@ }

function bisectPolygon(positions, size, startIndex, endIndex, bbox, edge) {
function bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {
var numPoints = (endIndex - startIndex) / size;
var resultLow = [];
var resultHigh = [];
var typesLow = edgeTypes && [];
var typesHigh = edgeTypes && [];
var scratchPoint = [];
var p;
var side;
var type;
var prev = (0, _utils.getPointAtIndex)(positions, numPoints - 1, size, startIndex);
var prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);
var prevType = edgeTypes && edgeTypes[numPoints - 1];
var lowPointCount = 0;

@@ -158,2 +188,3 @@ var highPointCount = 0;

side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);
type = edgeTypes && edgeTypes[startIndex / size + i];

@@ -164,2 +195,7 @@ if (side && prevSide && prevSide !== side) {

(0, _utils.push)(resultHigh, scratchPoint);
if (edgeTypes) {
typesLow.push(prevType);
typesHigh.push(prevType);
}
}

@@ -177,7 +213,28 @@

if (edgeTypes) {
if (side <= 0) {
typesLow.push(type);
} else if (typesLow.length) {
typesLow[typesLow.length - 1] = TYPE_INSIDE;
}
if (side >= 0) {
typesHigh.push(type);
} else if (typesHigh.length) {
typesHigh[typesHigh.length - 1] = TYPE_INSIDE;
}
}
(0, _utils.copy)(prev, p);
prevSide = side;
prevType = type;
}
return [lowPointCount ? resultLow : null, highPointCount ? resultHigh : null];
return [lowPointCount ? {
pos: resultLow,
types: typesLow
} : null, highPointCount ? {
pos: resultHigh,
types: typesHigh
} : null];
}

@@ -184,0 +241,0 @@

@@ -5,3 +5,3 @@ import {Polygon} from "./cut-by-grid";

positions : Array<number>,
options : {
options? : {
size? : number,

@@ -17,8 +17,9 @@ startIndex? : number,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
normalize? : boolean,
maxLatitude: number
maxLatitude?: number,
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -68,3 +68,5 @@ "use strict";

_options$normalize2 = options.normalize,
normalize = _options$normalize2 === void 0 ? true : _options$normalize2;
normalize = _options$normalize2 === void 0 ? true : _options$normalize2,
_options$edgeTypes = options.edgeTypes,
edgeTypes = _options$edgeTypes === void 0 ? false : _options$edgeTypes;
holeIndices = holeIndices || [];

@@ -99,3 +101,4 @@ var newPositions = [];

gridResolution: 360,
gridOffset: [-180, -180]
gridOffset: [-180, -180],
edgeTypes: edgeTypes
});

@@ -111,3 +114,3 @@

var part = _step2.value;
shiftLongitudesIntoRange(Array.isArray(part) ? part : part.positions, size);
shiftLongitudesIntoRange(part.positions, size);
}

@@ -114,0 +117,0 @@ } catch (err) {

@@ -6,3 +6,3 @@ type BoundingBox = [number, number, number, number];

bbox : BoundingBox,
options : {
options? : {
size? : number,

@@ -17,3 +17,3 @@ startIndex? : number,

bbox: BoundingBox,
options : {
options? : {
size? : number,

@@ -20,0 +20,0 @@ startIndex? : number,

@@ -1,6 +0,6 @@

type Polygon = Array<number> | {positions: Array<number>, holeIndices: Array<number>};
type Polygon = {positions: Array<number>, holeIndices?: Array<number>, vertexTypes?: Array<Number>};
export function cutPolylineByGrid(
positions : Array<number>,
options : {
options? : {
size? : number,

@@ -18,7 +18,8 @@ broken? : boolean,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
gridResolution? : number,
gridOffset? : [number, number]
gridOffset? : [number, number],
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -54,2 +54,4 @@ import { bitCode, intersect } from './lineclip';

}
const TYPE_INSIDE = 0;
const TYPE_BORDER = 1;
export function cutPolygonByGrid(positions, holeIndices, options = {}) {

@@ -63,3 +65,4 @@ if (!positions.length) {

gridResolution = 10,
gridOffset = [0, 0]
gridOffset = [0, 0],
edgeTypes = false
} = options;

@@ -69,2 +72,3 @@ const result = [];

pos: positions,
types: edgeTypes && new Array(positions.length / size).fill(TYPE_BORDER),
holes: holeIndices || []

@@ -78,2 +82,3 @@ }];

pos,
types,
holes

@@ -86,9 +91,11 @@ } = queue.shift();

if (code) {
let parts = bisectPolygon(pos, size, 0, holes[0] || pos.length, cell, code);
let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);
const polygonLow = {
pos: parts[0],
pos: parts[0].pos,
types: parts[0].types,
holes: []
};
const polygonHigh = {
pos: parts[1],
pos: parts[1].pos,
types: parts[1].types,
holes: []

@@ -99,7 +106,11 @@ };

for (let i = 0; i < holes.length; i++) {
parts = bisectPolygon(pos, size, holes[i], holes[i + 1] || pos.length, cell, code);
parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);
if (parts[0]) {
polygonLow.holes.push(polygonLow.pos.length);
polygonLow.pos = polygonLow.pos.concat(parts[0]);
polygonLow.pos = polygonLow.pos.concat(parts[0].pos);
if (edgeTypes) {
polygonLow.types = polygonLow.types.concat(parts[0].types);
}
}

@@ -109,10 +120,23 @@

polygonHigh.holes.push(polygonHigh.pos.length);
polygonHigh.pos = polygonHigh.pos.concat(parts[1]);
polygonHigh.pos = polygonHigh.pos.concat(parts[1].pos);
if (edgeTypes) {
polygonHigh.types = polygonHigh.types.concat(parts[1].types);
}
}
}
} else {
result.push(holes.length ? {
positions: pos,
holeIndices: holes
} : pos);
const polygon = {
positions: pos
};
if (edgeTypes) {
polygon.edgeTypes = types;
}
if (holes.length) {
polygon.holeIndices = holes;
}
result.push(polygon);
}

@@ -124,11 +148,15 @@ }

function bisectPolygon(positions, size, startIndex, endIndex, bbox, edge) {
function bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {
const numPoints = (endIndex - startIndex) / size;
const resultLow = [];
const resultHigh = [];
const typesLow = edgeTypes && [];
const typesHigh = edgeTypes && [];
const scratchPoint = [];
let p;
let side;
let type;
const prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);
let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);
let prevType = edgeTypes && edgeTypes[numPoints - 1];
let lowPointCount = 0;

@@ -140,2 +168,3 @@ let highPointCount = 0;

side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);
type = edgeTypes && edgeTypes[startIndex / size + i];

@@ -146,2 +175,7 @@ if (side && prevSide && prevSide !== side) {

push(resultHigh, scratchPoint);
if (edgeTypes) {
typesLow.push(prevType);
typesHigh.push(prevType);
}
}

@@ -159,7 +193,28 @@

if (edgeTypes) {
if (side <= 0) {
typesLow.push(type);
} else if (typesLow.length) {
typesLow[typesLow.length - 1] = TYPE_INSIDE;
}
if (side >= 0) {
typesHigh.push(type);
} else if (typesHigh.length) {
typesHigh[typesHigh.length - 1] = TYPE_INSIDE;
}
}
copy(prev, p);
prevSide = side;
prevType = type;
}
return [lowPointCount ? resultLow : null, highPointCount ? resultHigh : null];
return [lowPointCount ? {
pos: resultLow,
types: typesLow
} : null, highPointCount ? {
pos: resultHigh,
types: typesHigh
} : null];
}

@@ -166,0 +221,0 @@

@@ -5,3 +5,3 @@ import {Polygon} from "./cut-by-grid";

positions : Array<number>,
options : {
options? : {
size? : number,

@@ -17,8 +17,9 @@ startIndex? : number,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
normalize? : boolean,
maxLatitude: number
maxLatitude?: number,
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -31,3 +31,4 @@ import { cutPolylineByGrid, cutPolygonByGrid } from './cut-by-grid';

size = 2,
normalize = true
normalize = true,
edgeTypes = false
} = options;

@@ -63,3 +64,4 @@ holeIndices = holeIndices || [];

gridResolution: 360,
gridOffset: [-180, -180]
gridOffset: [-180, -180],
edgeTypes
});

@@ -69,3 +71,3 @@

for (const part of parts) {
shiftLongitudesIntoRange(Array.isArray(part) ? part : part.positions, size);
shiftLongitudesIntoRange(part.positions, size);
}

@@ -72,0 +74,0 @@ }

@@ -6,3 +6,3 @@ type BoundingBox = [number, number, number, number];

bbox : BoundingBox,
options : {
options? : {
size? : number,

@@ -17,3 +17,3 @@ startIndex? : number,

bbox: BoundingBox,
options : {
options? : {
size? : number,

@@ -20,0 +20,0 @@ startIndex? : number,

@@ -1,6 +0,6 @@

type Polygon = Array<number> | {positions: Array<number>, holeIndices: Array<number>};
type Polygon = {positions: Array<number>, holeIndices?: Array<number>, vertexTypes?: Array<Number>};
export function cutPolylineByGrid(
positions : Array<number>,
options : {
options? : {
size? : number,

@@ -18,7 +18,8 @@ broken? : boolean,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
gridResolution? : number,
gridOffset? : [number, number]
gridOffset? : [number, number],
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -59,2 +59,4 @@ import { bitCode, intersect } from './lineclip';

}
var TYPE_INSIDE = 0;
var TYPE_BORDER = 1;
export function cutPolygonByGrid(positions, holeIndices) {

@@ -72,6 +74,9 @@ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

_options$gridOffset2 = options.gridOffset,
gridOffset = _options$gridOffset2 === void 0 ? [0, 0] : _options$gridOffset2;
gridOffset = _options$gridOffset2 === void 0 ? [0, 0] : _options$gridOffset2,
_options$edgeTypes = options.edgeTypes,
edgeTypes = _options$edgeTypes === void 0 ? false : _options$edgeTypes;
var result = [];
var queue = [{
pos: positions,
types: edgeTypes && new Array(positions.length / size).fill(TYPE_BORDER),
holes: holeIndices || []

@@ -85,2 +90,3 @@ }];

pos = _queue$shift.pos,
types = _queue$shift.types,
holes = _queue$shift.holes;

@@ -93,9 +99,11 @@

if (code) {
var parts = bisectPolygon(pos, size, 0, holes[0] || pos.length, cell, code);
var parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);
var polygonLow = {
pos: parts[0],
pos: parts[0].pos,
types: parts[0].types,
holes: []
};
var polygonHigh = {
pos: parts[1],
pos: parts[1].pos,
types: parts[1].types,
holes: []

@@ -106,7 +114,11 @@ };

for (var i = 0; i < holes.length; i++) {
parts = bisectPolygon(pos, size, holes[i], holes[i + 1] || pos.length, cell, code);
parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);
if (parts[0]) {
polygonLow.holes.push(polygonLow.pos.length);
polygonLow.pos = polygonLow.pos.concat(parts[0]);
polygonLow.pos = polygonLow.pos.concat(parts[0].pos);
if (edgeTypes) {
polygonLow.types = polygonLow.types.concat(parts[0].types);
}
}

@@ -116,10 +128,23 @@

polygonHigh.holes.push(polygonHigh.pos.length);
polygonHigh.pos = polygonHigh.pos.concat(parts[1]);
polygonHigh.pos = polygonHigh.pos.concat(parts[1].pos);
if (edgeTypes) {
polygonHigh.types = polygonHigh.types.concat(parts[1].types);
}
}
}
} else {
result.push(holes.length ? {
positions: pos,
holeIndices: holes
} : pos);
var polygon = {
positions: pos
};
if (edgeTypes) {
polygon.edgeTypes = types;
}
if (holes.length) {
polygon.holeIndices = holes;
}
result.push(polygon);
}

@@ -131,11 +156,15 @@ }

function bisectPolygon(positions, size, startIndex, endIndex, bbox, edge) {
function bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {
var numPoints = (endIndex - startIndex) / size;
var resultLow = [];
var resultHigh = [];
var typesLow = edgeTypes && [];
var typesHigh = edgeTypes && [];
var scratchPoint = [];
var p;
var side;
var type;
var prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);
var prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);
var prevType = edgeTypes && edgeTypes[numPoints - 1];
var lowPointCount = 0;

@@ -147,2 +176,3 @@ var highPointCount = 0;

side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);
type = edgeTypes && edgeTypes[startIndex / size + i];

@@ -153,2 +183,7 @@ if (side && prevSide && prevSide !== side) {

push(resultHigh, scratchPoint);
if (edgeTypes) {
typesLow.push(prevType);
typesHigh.push(prevType);
}
}

@@ -166,7 +201,28 @@

if (edgeTypes) {
if (side <= 0) {
typesLow.push(type);
} else if (typesLow.length) {
typesLow[typesLow.length - 1] = TYPE_INSIDE;
}
if (side >= 0) {
typesHigh.push(type);
} else if (typesHigh.length) {
typesHigh[typesHigh.length - 1] = TYPE_INSIDE;
}
}
copy(prev, p);
prevSide = side;
prevType = type;
}
return [lowPointCount ? resultLow : null, highPointCount ? resultHigh : null];
return [lowPointCount ? {
pos: resultLow,
types: typesLow
} : null, highPointCount ? {
pos: resultHigh,
types: typesHigh
} : null];
}

@@ -173,0 +229,0 @@

@@ -5,3 +5,3 @@ import {Polygon} from "./cut-by-grid";

positions : Array<number>,
options : {
options? : {
size? : number,

@@ -17,8 +17,9 @@ startIndex? : number,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
normalize? : boolean,
maxLatitude: number
maxLatitude?: number,
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -56,3 +56,5 @@ import { cutPolylineByGrid, cutPolygonByGrid } from './cut-by-grid';

_options$normalize2 = options.normalize,
normalize = _options$normalize2 === void 0 ? true : _options$normalize2;
normalize = _options$normalize2 === void 0 ? true : _options$normalize2,
_options$edgeTypes = options.edgeTypes,
edgeTypes = _options$edgeTypes === void 0 ? false : _options$edgeTypes;
holeIndices = holeIndices || [];

@@ -87,3 +89,4 @@ var newPositions = [];

gridResolution: 360,
gridOffset: [-180, -180]
gridOffset: [-180, -180],
edgeTypes: edgeTypes
});

@@ -99,3 +102,3 @@

var part = _step2.value;
shiftLongitudesIntoRange(Array.isArray(part) ? part : part.positions, size);
shiftLongitudesIntoRange(part.positions, size);
}

@@ -102,0 +105,0 @@ } catch (err) {

@@ -6,3 +6,3 @@ type BoundingBox = [number, number, number, number];

bbox : BoundingBox,
options : {
options? : {
size? : number,

@@ -17,3 +17,3 @@ startIndex? : number,

bbox: BoundingBox,
options : {
options? : {
size? : number,

@@ -20,0 +20,0 @@ startIndex? : number,

@@ -8,3 +8,3 @@ {

},
"version": "3.2.0-alpha.3",
"version": "3.2.0-alpha.4",
"keywords": [

@@ -31,3 +31,3 @@ "webgl",

},
"gitHead": "d4dbf43e20c7d51108bcdb52a3bd2ee6846d05a7"
"gitHead": "92417c40480d10a9e933459ca838df13a34e48a1"
}

@@ -1,6 +0,6 @@

type Polygon = Array<number> | {positions: Array<number>, holeIndices: Array<number>};
type Polygon = {positions: Array<number>, holeIndices?: Array<number>, vertexTypes?: Array<Number>};
export function cutPolylineByGrid(
positions : Array<number>,
options : {
options? : {
size? : number,

@@ -18,7 +18,8 @@ broken? : boolean,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
gridResolution? : number,
gridOffset? : [number, number]
gridOffset? : [number, number],
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -57,2 +57,5 @@ /* eslint-disable max-statements, max-depth, complexity */

const TYPE_INSIDE = 0;
const TYPE_BORDER = 1;
export function cutPolygonByGrid(positions, holeIndices, options = {}) {

@@ -63,5 +66,11 @@ if (!positions.length) {

}
const {size = 2, gridResolution = 10, gridOffset = [0, 0]} = options;
const {size = 2, gridResolution = 10, gridOffset = [0, 0], edgeTypes = false} = options;
const result = [];
const queue = [{pos: positions, holes: holeIndices || []}];
const queue = [
{
pos: positions,
types: edgeTypes && new Array(positions.length / size).fill(TYPE_BORDER),
holes: holeIndices || []
}
];
const bbox = [[], []];

@@ -72,3 +81,3 @@ let cell = [];

while (queue.length) {
const {pos, holes} = queue.shift();
const {pos, types, holes} = queue.shift();

@@ -81,5 +90,5 @@ getBoundingBox(pos, size, bbox);

// Split the outer ring at the boundary
let parts = bisectPolygon(pos, size, 0, holes[0] || pos.length, cell, code);
const polygonLow = {pos: parts[0], holes: []};
const polygonHigh = {pos: parts[1], holes: []};
let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);
const polygonLow = {pos: parts[0].pos, types: parts[0].types, holes: []};
const polygonHigh = {pos: parts[1].pos, types: parts[1].types, holes: []};
queue.push(polygonLow, polygonHigh);

@@ -89,11 +98,17 @@

for (let i = 0; i < holes.length; i++) {
parts = bisectPolygon(pos, size, holes[i], holes[i + 1] || pos.length, cell, code);
parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);
if (parts[0]) {
polygonLow.holes.push(polygonLow.pos.length);
polygonLow.pos = polygonLow.pos.concat(parts[0]);
polygonLow.pos = polygonLow.pos.concat(parts[0].pos);
if (edgeTypes) {
polygonLow.types = polygonLow.types.concat(parts[0].types);
}
}
if (parts[1]) {
polygonHigh.holes.push(polygonHigh.pos.length);
polygonHigh.pos = polygonHigh.pos.concat(parts[1]);
polygonHigh.pos = polygonHigh.pos.concat(parts[1].pos);
if (edgeTypes) {
polygonHigh.types = polygonHigh.types.concat(parts[1].types);
}
}

@@ -103,3 +118,11 @@ }

// Polygon fits in a single cell, no more processing required
result.push(holes.length ? {positions: pos, holeIndices: holes} : pos);
const polygon = {positions: pos};
if (edgeTypes) {
polygon.edgeTypes = types;
}
if (holes.length) {
polygon.holeIndices = holes;
}
result.push(polygon);
}

@@ -110,7 +133,12 @@ }

// edgeTypes:
// TYPE_BORDER - edge from the original polygon
// TYPE_INSIDE - inside the original polygon
// eslint-disable-next-line max-params
function bisectPolygon(positions, size, startIndex, endIndex, bbox, edge) {
function bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {
const numPoints = (endIndex - startIndex) / size;
const resultLow = [];
const resultHigh = [];
const typesLow = edgeTypes && [];
const typesHigh = edgeTypes && [];
const scratchPoint = [];

@@ -120,4 +148,6 @@

let side;
let type;
const prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);
let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);
let prevType = edgeTypes && edgeTypes[numPoints - 1];
let lowPointCount = 0;

@@ -129,2 +159,3 @@ let highPointCount = 0;

side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);
type = edgeTypes && edgeTypes[startIndex / size + i];

@@ -136,2 +167,6 @@ // if segment goes through the boundary, add an intersection

push(resultHigh, scratchPoint);
if (edgeTypes) {
typesLow.push(prevType);
typesHigh.push(prevType);
}
}

@@ -148,7 +183,24 @@

if (edgeTypes) {
if (side <= 0) {
typesLow.push(type);
} else if (typesLow.length) {
typesLow[typesLow.length - 1] = TYPE_INSIDE;
}
if (side >= 0) {
typesHigh.push(type);
} else if (typesHigh.length) {
typesHigh[typesHigh.length - 1] = TYPE_INSIDE;
}
}
copy(prev, p);
prevSide = side;
prevType = type;
}
return [lowPointCount ? resultLow : null, highPointCount ? resultHigh : null];
return [
lowPointCount ? {pos: resultLow, types: typesLow} : null,
highPointCount ? {pos: resultHigh, types: typesHigh} : null
];
}

@@ -155,0 +207,0 @@

@@ -5,3 +5,3 @@ import {Polygon} from "./cut-by-grid";

positions : Array<number>,
options : {
options? : {
size? : number,

@@ -17,8 +17,9 @@ startIndex? : number,

holeIndices : Array<number> | null,
options : {
options? : {
size? : number,
normalize? : boolean,
maxLatitude: number
maxLatitude?: number,
edgeTypes? : boolean
}
) : Array<Polygon>;

@@ -34,3 +34,3 @@ import {cutPolylineByGrid, cutPolygonByGrid} from './cut-by-grid';

export function cutPolygonByMercatorBounds(positions, holeIndices, options = {}) {
const {size = 2, normalize = true} = options;
const {size = 2, normalize = true, edgeTypes = false} = options;
holeIndices = holeIndices || [];

@@ -73,3 +73,4 @@ const newPositions = [];

gridResolution: 360,
gridOffset: [-180, -180]
gridOffset: [-180, -180],
edgeTypes
});

@@ -81,3 +82,3 @@

for (const part of parts) {
shiftLongitudesIntoRange(Array.isArray(part) ? part : part.positions, size);
shiftLongitudesIntoRange(part.positions, size);
}

@@ -84,0 +85,0 @@ }

@@ -6,3 +6,3 @@ type BoundingBox = [number, number, number, number];

bbox : BoundingBox,
options : {
options? : {
size? : number,

@@ -17,3 +17,3 @@ startIndex? : number,

bbox: BoundingBox,
options : {
options? : {
size? : number,

@@ -20,0 +20,0 @@ startIndex? : number,

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc