From 1afff2842a6b49046198cf4c4e7dee729ec0b258 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Mon, 13 Jan 2025 10:55:51 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A7=80=EB=B6=95=20=ED=98=95=EC=83=81?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/qpolygon-utils.js | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 3192e756..7f552dcb 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -1854,20 +1854,24 @@ const changeHipAndGableRoof = (currentRoof, canvas) => { if (ridgeLines.length > 0) { const ridge = ridgeLines[0] if (ridge.x1 === currentRoof.attributes.ridgeCoordinate.x1 && ridge.y1 === currentRoof.attributes.ridgeCoordinate.y1) { + const signX = Math.sign(midX - ridge.x1) + const signY = Math.sign(midY - ridge.y1) ridge.set({ - x1: midX + xWidth, - y1: midY + yWidth, + x1: midX - signX * Math.abs(xWidth), + y1: midY - signY * Math.abs(yWidth), x2: ridge.x2, y2: ridge.y2, }) currentRoof.attributes.ridgeCoordinate = { x1: ridge.x1, y1: ridge.y1 } } if (ridge.x2 === currentRoof.attributes.ridgeCoordinate.x1 && ridge.y2 === currentRoof.attributes.ridgeCoordinate.y1) { + const signX = Math.sign(midX - ridge.x2) + const signY = Math.sign(midY - ridge.y2) ridge.set({ x1: ridge.x1, y1: ridge.y1, - x2: midX - xWidth, - y2: midY - yWidth, + x2: midX - signX * Math.abs(xWidth), + y2: midY - signY * Math.abs(yWidth), }) currentRoof.attributes.ridgeCoordinate = { x1: ridge.x2, y1: ridge.y2 } } @@ -2086,28 +2090,32 @@ const changeJerkInHeadRoof = (currentRoof, canvas) => { if (ridgeLines.length > 0) { const ridge = ridgeLines[0] if (ridge.x1 === currentRoof.attributes.ridgeCoordinate.x1 && ridge.y1 === currentRoof.attributes.ridgeCoordinate.y1) { + const signX = Math.sign(midX - ridge.x1) + const signY = Math.sign(midY - ridge.y1) ridge.set({ - x1: midX + xWidth, - y1: midY + yWidth, + x1: midX - signX * Math.abs(xWidth), + y1: midY - signY * Math.abs(yWidth), x2: ridge.x2, y2: ridge.y2, }) currentRoof.attributes.ridgeCoordinate = { x1: ridge.x1, y1: ridge.y1 } - hipX2 = midX + xWidth - hipY2 = midY + yWidth + hipX2 = ridge.x1 + hipY2 = ridge.y1 } if (ridge.x2 === currentRoof.attributes.ridgeCoordinate.x1 && ridge.y2 === currentRoof.attributes.ridgeCoordinate.y1) { + const signX = Math.sign(midX - ridge.x2) + const signY = Math.sign(midY - ridge.y2) ridge.set({ x1: ridge.x1, y1: ridge.y1, - x2: midX - xWidth, - y2: midY - yWidth, + x2: midX - signX * Math.abs(xWidth), + y2: midY - signY * Math.abs(yWidth), }) currentRoof.attributes.ridgeCoordinate = { x1: ridge.x2, y1: ridge.y2 } - hipX2 = midX - xWidth - hipY2 = midY - yWidth + hipX2 = ridge.x2 + hipY2 = ridge.y2 } ridge.attributes.planeSize = Math.round(Math.sqrt(Math.pow(ridge.x1 - ridge.x2, 2) + Math.pow(ridge.y1 - ridge.y2, 2)) * 10) ridge.attributes.actualSize = Math.round(Math.sqrt(Math.pow(ridge.x1 - ridge.x2, 2) + Math.pow(ridge.y1 - ridge.y2, 2)) * 10)