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