This commit is contained in:
ysCha 2026-04-08 16:22:06 +09:00
parent 828ea12484
commit c05c08e390
2 changed files with 353 additions and 619 deletions

View File

@ -1765,10 +1765,10 @@ export function useMode() {
const reversedVertices = [...polygon.vertices].reverse() const reversedVertices = [...polygon.vertices].reverse()
const reversedLines = [] const reversedLines = []
const n = lines.length const n = lines.length
// lines[i] 는 edge i (vertex[i] → vertex[i+1]) 에 해당. reverse 후의 edge j 는 // reverse 후 edge j 는 원본 edge (n-2-j) 의 역방향에 해당
// 원본 edge (n - 1 - j) 와 같은 선분이므로 lines 배열도 동일 매핑으로 재정렬. // (reverse edge 0 = v[n-1]→v[n-2] = 원본 edge n-2 역방향, ..., 마지막 edge = 원본 edge n-1 역방향)
for (let j = 0; j < n; j++) { for (let j = 0; j < n; j++) {
reversedLines.push(lines[(n - 1 - j) % n]) reversedLines.push(lines[((n - 2 - j) % n + n) % n])
} }
polygon = createRoofPolygon(reversedVertices) polygon = createRoofPolygon(reversedVertices)
lines = reversedLines lines = reversedLines
@ -1777,7 +1777,7 @@ export function useMode() {
const offsetEdges = [] const offsetEdges = []
polygon.edges.forEach((edge, i) => { polygon.edges.forEach((edge, i) => {
const offset = lines[i % lines.length].attributes.offset const offset = lines[i % lines.length].attributes.offset === 0 ? 1 : lines[i % lines.length].attributes.offset
const dx = edge.outwardNormal.x * offset const dx = edge.outwardNormal.x * offset
const dy = edge.outwardNormal.y * offset const dy = edge.outwardNormal.y * offset
offsetEdges.push(createOffsetEdge(edge, dx, dy)) offsetEdges.push(createOffsetEdge(edge, dx, dy))
@ -1819,8 +1819,9 @@ export function useMode() {
const reversedVertices = [...polygon.vertices].reverse() const reversedVertices = [...polygon.vertices].reverse()
const reversedLines = [] const reversedLines = []
const n = lines.length const n = lines.length
// reverse 후 edge j 는 원본 edge (n-2-j) 의 역방향에 해당
for (let j = 0; j < n; j++) { for (let j = 0; j < n; j++) {
reversedLines.push(lines[(n - 1 - j) % n]) reversedLines.push(lines[((n - 2 - j) % n + n) % n])
} }
polygon = createRoofPolygon(reversedVertices) polygon = createRoofPolygon(reversedVertices)
lines = reversedLines lines = reversedLines
@ -1829,8 +1830,7 @@ export function useMode() {
const offsetEdges = [] const offsetEdges = []
polygon.edges.forEach((edge, i) => { polygon.edges.forEach((edge, i) => {
const offset = lines[i % lines.length].attributes.offset const offset = lines[i % lines.length].attributes.offset === 0 ? 1 : lines[i % lines.length].attributes.offset
const dx = edge.inwardNormal.x * offset const dx = edge.inwardNormal.x * offset
const dy = edge.inwardNormal.y * offset const dy = edge.inwardNormal.y * offset
offsetEdges.push(createOffsetEdge(edge, dx, dy)) offsetEdges.push(createOffsetEdge(edge, dx, dy))

File diff suppressed because it is too large Load Diff