diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index b9e812f3..e29db805 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -572,8 +572,14 @@ export const drawGableRoof = (roofId, canvas, textMode) => { } const findEdge = { vertex1: { x: midX, y: midY }, vertex2: { x: midX + roofVector.x * offset, y: midY + roofVector.y * offset } } - const edgeDx = Big(findEdge.vertex2.x).minus(Big(findEdge.vertex1.x)).toNumber() - const edgeDy = Big(findEdge.vertex2.y).minus(Big(findEdge.vertex1.y)).toNumber() + const edgeDx = + Big(findEdge.vertex2.x).minus(Big(findEdge.vertex1.x)).abs().toNumber() < 0.1 + ? 0 + : Big(findEdge.vertex2.x).minus(Big(findEdge.vertex1.x)).toNumber() + const edgeDy = + Big(findEdge.vertex2.y).minus(Big(findEdge.vertex1.y)).abs().toNumber() < 0.1 + ? 0 + : Big(findEdge.vertex2.y).minus(Big(findEdge.vertex1.y)).toNumber() const edgeLength = Math.sqrt(edgeDx * edgeDx + edgeDy * edgeDy) const edgeVector = { x: edgeDx / edgeLength, y: edgeDy / edgeLength } @@ -582,8 +588,10 @@ export const drawGableRoof = (roofId, canvas, textMode) => { const lineEdge = { vertex1: { x: roofLine.x1, y: roofLine.y1 }, vertex2: { x: roofLine.x2, y: roofLine.y2 } } const intersect = edgesIntersection(lineEdge, findEdge) if (intersect) { - const intersectDx = Big(intersect.x).minus(Big(findEdge.vertex1.x)).toNumber() - const intersectDy = Big(intersect.y).minus(Big(findEdge.vertex1.y)).toNumber() + const intersectDx = + Big(intersect.x).minus(Big(findEdge.vertex1.x)).abs().toNumber() < 0.1 ? 0 : Big(intersect.x).minus(Big(findEdge.vertex1.x)).toNumber() + const intersectDy = + Big(intersect.y).minus(Big(findEdge.vertex1.y)).abs().toNumber() < 0.1 ? 0 : Big(intersect.y).minus(Big(findEdge.vertex1.y)).toNumber() const intersectLength = Math.sqrt(intersectDx * intersectDx + intersectDy * intersectDy) const intersectVector = { x: intersectDx / intersectLength, y: intersectDy / intersectLength } if (edgeVector.x === intersectVector.x && edgeVector.y === intersectVector.y) {