diff --git a/src/hooks/module/useTrestle.js b/src/hooks/module/useTrestle.js index b0ec3a31..4e907c91 100644 --- a/src/hooks/module/useTrestle.js +++ b/src/hooks/module/useTrestle.js @@ -2726,16 +2726,26 @@ export const useTrestle = () => { moduleRowResultData.touchedHalfSurfaceBracketCnt += 1 } else if (!halfBottomLeftModule && !findSamePointInBottom(exposedBottomModules, module, direction)) { // 왼쪽 아래가 없고, 하단에 같은 점이 없는 경우는 touched는 1개, exposed는 2개 - moduleRowResultData.exposedHalfBottomBracketCnt += 1 - moduleRowResultData.touchedHalfSurfaceBracketCnt += 2 + if (level % 2 === 0) { + moduleRowResultData.exposedHalfBottomBracketCnt += 1 + moduleRowResultData.touchedHalfSurfaceBracketCnt += 2 + } else { + moduleRowResultData.exposedHalfBottomBracketCnt += 2 + moduleRowResultData.touchedHalfSurfaceBracketCnt += 1 + } } else if (!halfBottomRightModule && findSamePointInBottom(exposedBottomModules, module, direction)) { // 오른쪽 아래가 없고, 하단에 같은 점이 있는 경우는 exposed는 2개, touched는 1개 moduleRowResultData.exposedHalfBottomBracketCnt += 1 moduleRowResultData.touchedHalfSurfaceBracketCnt += 2 } else if (!halfBottomRightModule && !findSamePointInBottom(exposedBottomModules, module, direction)) { // 오른쪽 아래가 없고, 하단에 같은 점이 없는 경우는 exposed는 1개, touched는 2개 - moduleRowResultData.exposedHalfBottomBracketCnt += 2 - moduleRowResultData.touchedHalfSurfaceBracketCnt += 1 + if (level % 2 === 0) { + moduleRowResultData.exposedHalfBottomBracketCnt += 2 + moduleRowResultData.touchedHalfSurfaceBracketCnt += 1 + } else { + moduleRowResultData.exposedHalfBottomBracketCnt += 1 + moduleRowResultData.touchedHalfSurfaceBracketCnt += 2 + } } } } @@ -2774,6 +2784,20 @@ export const useTrestle = () => { if (rackYn === 'N') { if (rackQty !== 3) { moduleRowResultData.exposedHalfTopBracketCnt += rackQty / 2 + } else { + if (halfTopLeftModule) { + if (level % 2 === 0) { + moduleRowResultData.exposedHalfTopBracketCnt += 2 + } else { + moduleRowResultData.exposedHalfTopBracketCnt += 1 + } + } else if (halfTopRightModule) { + if (level % 2 === 0) { + moduleRowResultData.exposedHalfTopBracketCnt += 1 + } else { + moduleRowResultData.exposedHalfTopBracketCnt += 2 + } + } } } } else if (!halfTopLeftModule && !halfTopRightModule) { diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 4e9351a8..d4417f9c 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -7250,11 +7250,12 @@ const drawHipLine = (points, canvas, roof, textMode, currentRoof, prevDegree, cu const baseX = Big(points[0]).minus(Big(points[2])).abs() const baseY = Big(points[1]).minus(Big(points[3])).abs() if (baseX.gt(1) && baseY.gt(1)) { - const base = calcLinePlaneSize({ x1: points[0], y1: points[1], x2: points[2], y2: points[3] }) / 10 - const heightX = baseX.times(Math.tan((currentDegree * Math.PI) / 180)).round() - const heightY = baseY.times(Math.tan((prevDegree * Math.PI) / 180)).round() - const degreeX = Math.atan(heightX.div(base).toNumber()) / (Math.PI / 180) - const degreeY = Math.atan(heightY.div(base).toNumber()) / (Math.PI / 180) + const hypotenuse = calcLinePlaneSize({ x1: points[0], y1: points[1], x2: points[2], y2: points[3] }) + const base = getAdjacent(hypotenuse) + const heightX = base * Math.tan((currentDegree * Math.PI) / 180) + const heightY = base * Math.tan((prevDegree * Math.PI) / 180) + const degreeX = Math.atan2(heightX, hypotenuse) * (180 / Math.PI) + const degreeY = Math.atan2(heightY, hypotenuse) * (180 / Math.PI) if (Math.abs(degreeX - degreeY) < 1) { currentDegree = degreeX prevDegree = degreeY