First part of PR fixes
This commit is contained in:
parent
18bcab0a38
commit
7e7cb3ae85
67
Frontline.js
67
Frontline.js
@ -49,21 +49,25 @@ export function getFrontline(frontlineData, protrusionData = null) {
|
||||
const bodyPolygon = [...leftSidePoints, ...rightSidePoints.reverse()];
|
||||
|
||||
if (protrusionData == null) {
|
||||
let polygonCoords;
|
||||
|
||||
if (style === BOTH_SIDES) {
|
||||
const polygonCoords = [
|
||||
polygonCoords = [
|
||||
...bodyPolygonLeft,
|
||||
...bodyPolygonRight,
|
||||
bodyPolygonLeft[0]
|
||||
];
|
||||
return turf.polygon([[...polygonCoords]]);
|
||||
} else {
|
||||
const polygonCoords = [
|
||||
polygonCoords = [
|
||||
...bodyPolygon,
|
||||
bodyPolygon[0]
|
||||
];
|
||||
return turf.polygon([[...polygonCoords]]);
|
||||
}
|
||||
|
||||
const resultPolygon = turf.polygon([polygonCoords]);
|
||||
return resultPolygon;
|
||||
}
|
||||
|
||||
const polygonCoordsLeft= [
|
||||
...bodyPolygonLeft,
|
||||
bodyPolygonLeft[0]
|
||||
@ -81,58 +85,45 @@ export function getFrontline(frontlineData, protrusionData = null) {
|
||||
|
||||
if (style === LEFT_SIDE) {
|
||||
let mainPoly = turf.polygon([[...polygonCoords]]);
|
||||
const protrusions = computeProtrusion(leftSidePoints, protrusionData, frontlineData.offsetDistance);
|
||||
|
||||
for(let i = 0; i <= protrusions.length -1 ; i++)
|
||||
{
|
||||
let additionalPoly = protrusions[i];
|
||||
mainPoly = turf.union(turf.featureCollection([mainPoly, additionalPoly]));
|
||||
}
|
||||
const finalPoly = constructProstrusions(mainPoly, leftSidePoints, protrusionData, frontlineData);
|
||||
|
||||
return {
|
||||
rightPoly: null,
|
||||
leftPoly: mainPoly,
|
||||
leftPoly: finalPoly,
|
||||
};
|
||||
} else if (style === RIGHT_SIDE) {
|
||||
let mainPoly = turf.polygon([[...polygonCoords]]);
|
||||
const protrusions = computeProtrusion(rightSidePoints, protrusionData, frontlineData.offsetDistance);
|
||||
const finalPoly = constructProstrusions(mainPoly, rightSidePoints, protrusionData, frontlineData);
|
||||
|
||||
for(let i = 0; i <= protrusions.length -1 ; i++)
|
||||
{
|
||||
let additionalPoly = protrusions[i];
|
||||
mainPoly = turf.union(turf.featureCollection([mainPoly, additionalPoly]));
|
||||
}
|
||||
|
||||
return {
|
||||
rightPoly: mainPoly,
|
||||
rightPoly: finalPoly,
|
||||
leftPoly: null,
|
||||
};
|
||||
} else if (style === BOTH_SIDES) {
|
||||
let mainPoly = turf.polygon([[...polygonCoordsRight]]);
|
||||
const protrusions = computeProtrusion(rightSidePoints, protrusionData, frontlineData.offsetDistance);
|
||||
const finalPoly = constructProstrusions(mainPoly, rightSidePoints, protrusionData, frontlineData);
|
||||
let secondaryPoly = turf.polygon([[...polygonCoordsLeft]]);
|
||||
const secondaryfinalPoly = constructProstrusions(secondaryPoly, leftSidePoints, protrusionData, frontlineData);
|
||||
|
||||
for(let i = 0; i <= protrusions.length -1 ; i++)
|
||||
{
|
||||
let additionalPoly = protrusions[i];
|
||||
mainPoly = turf.union(turf.featureCollection([mainPoly, additionalPoly]));
|
||||
}
|
||||
|
||||
let mainPolyLeft = turf.polygon([[...polygonCoordsLeft]]);
|
||||
const protrusionsLeft = computeProtrusion(leftSidePoints, protrusionData, frontlineData.offsetDistance);
|
||||
|
||||
for(let i = 0; i <= protrusionsLeft.length -1 ; i++)
|
||||
{
|
||||
let additionalPoly = protrusionsLeft[i];
|
||||
mainPolyLeft = turf.union(turf.featureCollection([mainPolyLeft, additionalPoly]));
|
||||
}
|
||||
|
||||
return {
|
||||
rightPoly: mainPoly,
|
||||
leftPoly: mainPolyLeft,
|
||||
rightPoly: finalPoly,
|
||||
leftPoly: secondaryfinalPoly,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function constructProstrusions(mainPoly, points, protrusionData, frontlineData) {
|
||||
|
||||
const protrusions = computeProtrusion(points, protrusionData, frontlineData.offsetDistance);
|
||||
|
||||
for(let i = 0; i <= protrusions.length -1 ; i++)
|
||||
{
|
||||
mainPoly = turf.union(turf.featureCollection([mainPoly, protrusions[i]]));
|
||||
}
|
||||
|
||||
return mainPoly;
|
||||
}
|
||||
|
||||
function computeSplinePoints(points, density) {
|
||||
if (points.length < 2) return points;
|
||||
const splinePoints = [];
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
//import { getArrowPolygon } from "athena-utils/shape/Arrow.js";
|
||||
import { getArrowPolygon } from "athena-utils/shape/Arrow.js";
|
||||
import { ARROW_BODY_STYLE_CONSTANT, ARROW_BODY_STYLE_LINEAR, ARROW_BODY_STYLE_EXPONENTIAL } from "athena-utils/shape/Arrow.js";
|
||||
import { getCirclePolygon } from "athena-utils/shape/BasicShapes.js";
|
||||
import { getRectanglePolygon } from "athena-utils/shape/BasicShapes.js";
|
||||
import { getFrontline } from "athena-utils/shape/Frontline.js";
|
||||
import { LEFT_SIDE, RIGHT_SIDE, BOTH_SIDES } from "athena-utils/shape/Frontline.js";
|
||||
import { getArrowPolygon } from "./Arrow.js";
|
||||
import { ARROW_BODY_STYLE_CONSTANT, ARROW_BODY_STYLE_LINEAR, ARROW_BODY_STYLE_EXPONENTIAL } from "./Arrow.js";
|
||||
import { getCirclePolygon } from "./BasicShapes.js";
|
||||
import { getRectanglePolygon } from "./BasicShapes.js";
|
||||
import { getFrontline } from "./Frontline.js";
|
||||
import { LEFT_SIDE, RIGHT_SIDE, BOTH_SIDES } from "./Frontline.js";
|
||||
|
||||
mapboxgl.accessToken = 'pk.eyJ1Ijoib3V0ZG9vcm1hcHBpbmdjb21wYW55IiwiYSI6ImNqYmh3cDdjYzNsMnozNGxsYzlvMmk2bTYifQ.QqcZ4LVoLWnXafXdjZxnZg';
|
||||
const map = new mapboxgl.Map({
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user