Merge branch 'feature/test-jy' into dev
This commit is contained in:
commit
e68e51384e
@ -1501,8 +1501,64 @@ const drawRoofRidge = (polygon) => {
|
||||
})
|
||||
//중복 제거
|
||||
polygon.ridges = polygon.ridges.filter((ridge, index, self) => index === self.findIndex((t) => t.x1 === ridge.x1 && t.y1 === ridge.y1))
|
||||
// console.log('polygon.ridges', polygon.ridges)
|
||||
polygon.innerLines = polygon.innerLines.filter((line, index, self) => index === self.findIndex((t) => t.x1 === line.x1 && t.y1 === line.y1))
|
||||
//겹쳐지는 마루는 하나로 합침
|
||||
polygon.ridges.forEach((ridge, index) => {
|
||||
polygon.ridges
|
||||
.filter((ridge2) => !(ridge.x1 === ridge2.x1 && ridge.y1 === ridge2.y1 && ridge.x2 === ridge2.x2 && ridge.y2 === ridge2.y2))
|
||||
.forEach((ridge2) => {
|
||||
let overlap = segmentsOverlap(ridge, ridge2)
|
||||
if (overlap) {
|
||||
let x1 = Math.min(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2)
|
||||
let x2 = Math.max(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2)
|
||||
let y1 = Math.min(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2)
|
||||
let y2 = Math.max(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2)
|
||||
const newRidge = new QLine([x1, y1, x2, y2], {
|
||||
fontSize: polygon.fontSize,
|
||||
stroke: 'blue',
|
||||
strokeWidth: 1,
|
||||
})
|
||||
polygon.canvas.remove(ridge)
|
||||
polygon.canvas.remove(ridge2)
|
||||
polygon.ridges = polygon.ridges.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2))
|
||||
polygon.ridges = polygon.ridges.filter((r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2))
|
||||
polygon.innerLines = polygon.innerLines.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2))
|
||||
polygon.innerLines = polygon.innerLines.filter(
|
||||
(r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2),
|
||||
)
|
||||
|
||||
polygon.canvas.add(newRidge)
|
||||
polygon.ridges.push(newRidge)
|
||||
polygon.innerLines.push(newRidge)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 두 선분이 겹치는지 확인
|
||||
* @param line1
|
||||
* @param line2
|
||||
* @returns {boolean}
|
||||
*/
|
||||
const segmentsOverlap = (line1, line2) => {
|
||||
if (line1.y1 === line1.y2 && line2.y1 === line2.y2 && line1.y1 === line2.y1) {
|
||||
// console.log('가로방향 겹침 확인 ')
|
||||
if ((line1.x1 <= line2.x1 && line1.x2 >= line2.x1) || (line1.x1 <= line2.x2 && line1.x2 >= line2.x2)) {
|
||||
// console.log('가로방향 겹침')
|
||||
return true
|
||||
}
|
||||
}
|
||||
if (line1.x1 === line1.x2 && line2.x1 === line2.x2 && line1.x1 === line2.x1) {
|
||||
// console.log('세로방향 겹침 확인')
|
||||
if ((line1.y1 <= line2.y1 && line1.y2 >= line2.y1) || (line1.y1 <= line2.y2 && line1.y2 >= line2.y2)) {
|
||||
// console.log('세로방향 겹침')
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const drawHips = (polygon) => {
|
||||
/*
|
||||
마루에서 시작되는 hip을 먼저 그립니다.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user