From c58146ca5362e3100a3a7cfe125dbe3821881bb5 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Mon, 22 Sep 2025 10:40:35 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=88=98=EC=A0=90=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EC=A7=80=EB=B6=95?= =?UTF-8?q?=EC=84=A0=20=EC=B0=BE=EA=B8=B0=20=EC=98=A4=EB=A5=98=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/qpolygon-utils.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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) {