소수점 문제로 인한 지붕선 찾기 오류 처리

This commit is contained in:
Jaeyoung Lee 2025-09-22 10:40:35 +09:00
parent fda35b6927
commit c58146ca53

View File

@ -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) {