직선라인 임시맞춤
This commit is contained in:
parent
afef45c1c1
commit
168e68d3f0
@ -473,6 +473,9 @@ export const skeletonBuilder = (roofId, canvas, textMode) => {
|
|||||||
roofLineContactPoints = movingLineFromSkeleton(roofId, canvas)
|
roofLineContactPoints = movingLineFromSkeleton(roofId, canvas)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// changRoofLinePoints 좌표를 roof.skeletonPoints에 저장 (원본 roof.points는 유지)
|
||||||
|
roof.skeletonPoints = changRoofLinePoints.map(p => ({ x: p.x, y: p.y }))
|
||||||
|
|
||||||
console.log('points:', changRoofLinePoints)
|
console.log('points:', changRoofLinePoints)
|
||||||
const geoJSONPolygon = toGeoJSON(changRoofLinePoints)
|
const geoJSONPolygon = toGeoJSON(changRoofLinePoints)
|
||||||
|
|
||||||
@ -1766,10 +1769,28 @@ function processEavesEdge(roofId, canvas, skeleton, edgeResult, skeletonLines) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let eavesLines = []
|
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++) {
|
for (let i = 0; i < polygonPoints.length; i++) {
|
||||||
const p1 = polygonPoints[i];
|
const p1 = polygonPoints[i];
|
||||||
const p2 = polygonPoints[(i + 1) % polygonPoints.length];
|
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);
|
const clippedLine = clipLineToRoofBoundary(p1, p2, roof.lines, roof.moveSelectLine);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user