직선라인 임시맞춤
This commit is contained in:
parent
afef45c1c1
commit
168e68d3f0
@ -473,6 +473,9 @@ export const skeletonBuilder = (roofId, canvas, textMode) => {
|
||||
roofLineContactPoints = movingLineFromSkeleton(roofId, canvas)
|
||||
}
|
||||
|
||||
// changRoofLinePoints 좌표를 roof.skeletonPoints에 저장 (원본 roof.points는 유지)
|
||||
roof.skeletonPoints = changRoofLinePoints.map(p => ({ x: p.x, y: p.y }))
|
||||
|
||||
console.log('points:', changRoofLinePoints)
|
||||
const geoJSONPolygon = toGeoJSON(changRoofLinePoints)
|
||||
|
||||
@ -1766,10 +1769,28 @@ function processEavesEdge(roofId, canvas, skeleton, edgeResult, skeletonLines) {
|
||||
}
|
||||
|
||||
let eavesLines = []
|
||||
// 확장된 외곽선 판별용
|
||||
const skPts = roof.skeletonPoints || []
|
||||
const isSkeletonOuterEdge = (p1, p2, tolerance = 0.5) => {
|
||||
for (let si = 0; si < skPts.length; si++) {
|
||||
const sp1 = skPts[si]
|
||||
const sp2 = skPts[(si + 1) % skPts.length]
|
||||
if ((Math.abs(p1.x - sp1.x) < tolerance && Math.abs(p1.y - sp1.y) < tolerance &&
|
||||
Math.abs(p2.x - sp2.x) < tolerance && Math.abs(p2.y - sp2.y) < tolerance) ||
|
||||
(Math.abs(p1.x - sp2.x) < tolerance && Math.abs(p1.y - sp2.y) < tolerance &&
|
||||
Math.abs(p2.x - sp1.x) < tolerance && Math.abs(p2.y - sp1.y) < tolerance)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
for (let i = 0; i < polygonPoints.length; i++) {
|
||||
const p1 = polygonPoints[i];
|
||||
const p2 = polygonPoints[(i + 1) % polygonPoints.length];
|
||||
|
||||
// 확장된 외곽선에 해당하는 edge는 스킵
|
||||
if (skPts.length > 0 && isSkeletonOuterEdge(p1, p2)) continue
|
||||
|
||||
// 지붕 경계선과 교차 확인 및 클리핑
|
||||
const clippedLine = clipLineToRoofBoundary(p1, p2, roof.lines, roof.moveSelectLine);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user