diff --git a/src/sliceActions/calculateLayersIntersections.js b/src/sliceActions/calculateLayersIntersections.js index a9c2ddd..7dc2a45 100644 --- a/src/sliceActions/calculateLayersIntersections.js +++ b/src/sliceActions/calculateLayersIntersections.js @@ -8,10 +8,8 @@ export default function calculateLayersIntersections(lines, settings) { const numLayers = Math.floor((dimensionsZ - Z_OFFSET) / layerHeight); - const layers = Array.from(Array(numLayers)).map(() => ({ - points: {}, - faceIndexes: [] - })); + const layerPoints = Array.from(Array(numLayers)).map(() => []); + const layerFaceIndexes = Array.from(Array(numLayers)).map(() => []); for (let lineIndex = 0; lineIndex < lines.length; lineIndex ++) { const { line, faces } = lines[lineIndex]; @@ -34,20 +32,18 @@ export default function calculateLayersIntersections(lines, settings) { z = line.end.z * alpha + line.start.z * alpha1; } - layers[layerIndex].points[lineIndex] = { x: z, y: x }; - layers[layerIndex].faceIndexes.push(...faces); + layerPoints[layerIndex][lineIndex] = { x: z, y: x }; + layerFaceIndexes[layerIndex].push(...faces); } } } - for (let i = 0; i < layers.length; i ++) { - const layer = layers[i]; - - layer.faceIndexes = layer.faceIndexes.reduce((result, faceIndex) => { + for (let i = 0; i < layerFaceIndexes.length; i ++) { + layerFaceIndexes[i] = layerFaceIndexes[i].reduce((result, faceIndex) => { if (!result.includes(faceIndex)) result.push(faceIndex); return result; }, []); } - return layers; + return { layerPoints, layerFaceIndexes }; } diff --git a/src/sliceActions/intersectionsToShapes.js b/src/sliceActions/intersectionsToShapes.js index 3328ebd..8630004 100644 --- a/src/sliceActions/intersectionsToShapes.js +++ b/src/sliceActions/intersectionsToShapes.js @@ -1,14 +1,15 @@ import { subtract, normal, normalize, dot, almostEquals } from './helpers/vector2D.js'; -export default function intersectionsToShapes(intersectionLayers, faces, openObjectIndexes, settings) { +export default function intersectionsToShapes(layerPoints, layerFaceIndexes, faces, openObjectIndexes, settings) { const layers = []; - for (let layer = 0; layer < intersectionLayers.length; layer ++) { + for (let layer = 0; layer < layerPoints.length; layer ++) { const fillShapes = []; const lineShapesOpen = []; const lineShapesClosed = []; - const { points, faceIndexes } = intersectionLayers[layer]; + const points = layerPoints[layer]; + const faceIndexes = layerFaceIndexes[layer]; if (faceIndexes.length === 0) continue; diff --git a/src/sliceActions/slice.js b/src/sliceActions/slice.js index 516864b..0f8cd02 100644 --- a/src/sliceActions/slice.js +++ b/src/sliceActions/slice.js @@ -34,10 +34,10 @@ export default function(settings, geometry, openObjectIndexes, constructLinePrev const { lines, faces } = createLines(geometry, settings); updateProgress('Calculating layer intersections'); - const layers = calculateLayersIntersections(lines, settings); + const { layerPoints, layerFaceIndexes } = calculateLayersIntersections(lines, settings); updateProgress('Constructing shapes from intersections'); - const shapes = intersectionsToShapes(layers, faces, openObjectIndexes, settings); + const shapes = intersectionsToShapes(layerPoints, layerFaceIndexes, faces, openObjectIndexes, settings); applyPrecision(shapes);