don't combine layerpoints and layer face indexes into objects

This commit is contained in:
casperlamboo 2018-02-12 00:36:05 +01:00
parent 4b17325c3f
commit 4352293e95
3 changed files with 13 additions and 16 deletions

View File

@ -8,10 +8,8 @@ export default function calculateLayersIntersections(lines, settings) {
const numLayers = Math.floor((dimensionsZ - Z_OFFSET) / layerHeight); const numLayers = Math.floor((dimensionsZ - Z_OFFSET) / layerHeight);
const layers = Array.from(Array(numLayers)).map(() => ({ const layerPoints = Array.from(Array(numLayers)).map(() => []);
points: {}, const layerFaceIndexes = Array.from(Array(numLayers)).map(() => []);
faceIndexes: []
}));
for (let lineIndex = 0; lineIndex < lines.length; lineIndex ++) { for (let lineIndex = 0; lineIndex < lines.length; lineIndex ++) {
const { line, faces } = lines[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; z = line.end.z * alpha + line.start.z * alpha1;
} }
layers[layerIndex].points[lineIndex] = { x: z, y: x }; layerPoints[layerIndex][lineIndex] = { x: z, y: x };
layers[layerIndex].faceIndexes.push(...faces); layerFaceIndexes[layerIndex].push(...faces);
} }
} }
} }
for (let i = 0; i < layers.length; i ++) { for (let i = 0; i < layerFaceIndexes.length; i ++) {
const layer = layers[i]; layerFaceIndexes[i] = layerFaceIndexes[i].reduce((result, faceIndex) => {
layer.faceIndexes = layer.faceIndexes.reduce((result, faceIndex) => {
if (!result.includes(faceIndex)) result.push(faceIndex); if (!result.includes(faceIndex)) result.push(faceIndex);
return result; return result;
}, []); }, []);
} }
return layers; return { layerPoints, layerFaceIndexes };
} }

View File

@ -1,14 +1,15 @@
import { subtract, normal, normalize, dot, almostEquals } from './helpers/vector2D.js'; 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 = []; const layers = [];
for (let layer = 0; layer < intersectionLayers.length; layer ++) { for (let layer = 0; layer < layerPoints.length; layer ++) {
const fillShapes = []; const fillShapes = [];
const lineShapesOpen = []; const lineShapesOpen = [];
const lineShapesClosed = []; const lineShapesClosed = [];
const { points, faceIndexes } = intersectionLayers[layer]; const points = layerPoints[layer];
const faceIndexes = layerFaceIndexes[layer];
if (faceIndexes.length === 0) continue; if (faceIndexes.length === 0) continue;

View File

@ -34,10 +34,10 @@ export default function(settings, geometry, openObjectIndexes, constructLinePrev
const { lines, faces } = createLines(geometry, settings); const { lines, faces } = createLines(geometry, settings);
updateProgress('Calculating layer intersections'); updateProgress('Calculating layer intersections');
const layers = calculateLayersIntersections(lines, settings); const { layerPoints, layerFaceIndexes } = calculateLayersIntersections(lines, settings);
updateProgress('Constructing shapes from intersections'); updateProgress('Constructing shapes from intersections');
const shapes = intersectionsToShapes(layers, faces, openObjectIndexes, settings); const shapes = intersectionsToShapes(layerPoints, layerFaceIndexes, faces, openObjectIndexes, settings);
applyPrecision(shapes); applyPrecision(shapes);