테스트중
This commit is contained in:
parent
7913c46c70
commit
4b3a18eec6
@ -23,7 +23,11 @@ export default class QPolygon extends fabric.Group {
|
|||||||
shape = 0 // 점 6개일때의 shape 모양
|
shape = 0 // 점 6개일때의 shape 모양
|
||||||
helpPoints = []
|
helpPoints = []
|
||||||
helpLines = []
|
helpLines = []
|
||||||
|
|
||||||
constructor(points, options, canvas) {
|
constructor(points, options, canvas) {
|
||||||
|
if (points.length !== 4 && points.length !== 6) {
|
||||||
|
throw new Error('Points must be 4 or 6.')
|
||||||
|
}
|
||||||
if (points.length !== 4 && points.length !== 6) {
|
if (points.length !== 4 && points.length !== 6) {
|
||||||
throw new Error('Points must be 4 or 6.')
|
throw new Error('Points must be 4 or 6.')
|
||||||
}
|
}
|
||||||
@ -69,7 +73,7 @@ export default class QPolygon extends fabric.Group {
|
|||||||
this.#updateLengthText()
|
this.#updateLengthText()
|
||||||
})
|
})
|
||||||
|
|
||||||
this.on('selected', function () {
|
this.on('selected', function() {
|
||||||
// 모든 컨트롤 떼기
|
// 모든 컨트롤 떼기
|
||||||
|
|
||||||
Object.keys(this.controls).forEach((controlKey) => {
|
Object.keys(this.controls).forEach((controlKey) => {
|
||||||
@ -249,7 +253,7 @@ export default class QPolygon extends fabric.Group {
|
|||||||
|
|
||||||
let xInt =
|
let xInt =
|
||||||
((point.y - vertex1.y) * (vertex2.x - vertex1.x)) /
|
((point.y - vertex1.y) * (vertex2.x - vertex1.x)) /
|
||||||
(vertex2.y - vertex1.y) +
|
(vertex2.y - vertex1.y) +
|
||||||
vertex1.x
|
vertex1.x
|
||||||
if (xInt < point.x) {
|
if (xInt < point.x) {
|
||||||
intersects++
|
intersects++
|
||||||
@ -328,19 +332,21 @@ export default class QPolygon extends fabric.Group {
|
|||||||
|
|
||||||
// 보조선 그리기
|
// 보조선 그리기
|
||||||
drawHelpLine(chon = 4) {
|
drawHelpLine(chon = 4) {
|
||||||
|
console.log(chon)
|
||||||
if (!this.isValid()) {
|
if (!this.isValid()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.lines.length === 4) {
|
/* if (this.lines.length === 4) {
|
||||||
this.#drawHelpLineInRect(chon)
|
this.#drawHelpLineInRect(chon)
|
||||||
} else if (this.lines.length === 6) {
|
} else if (this.lines.length === 6) {
|
||||||
// TODO : 6각형
|
// TODO : 6각형
|
||||||
this.#drawHelpLineInHexagon(chon)
|
this.#drawHelpLineInHexagon(chon)
|
||||||
} else if (this.lines.length === 8) {
|
} else if (this.lines.length === 8) {
|
||||||
// TODO : 8각형
|
// TODO : 8각형
|
||||||
this.#drawHelpLineInOctagon(chon)
|
this.#drawHelpLineInOctagon(chon)
|
||||||
}
|
}*/
|
||||||
|
this.#drawHelpLineInOctagon(chon)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -920,5 +926,119 @@ export default class QPolygon extends fabric.Group {
|
|||||||
this.canvas.renderAll()
|
this.canvas.renderAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
#drawHelpLineInOctagon(chon) {}
|
#drawHelpLineInOctagon(chon) {
|
||||||
|
console.log(this.lines)
|
||||||
|
|
||||||
|
let prevLine, currentLine, nextLine
|
||||||
|
let point
|
||||||
|
|
||||||
|
this.lines.forEach(
|
||||||
|
(value, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
prevLine = this.lines[this.lines.length - 1]
|
||||||
|
} else {
|
||||||
|
prevLine = this.lines[index - 1]
|
||||||
|
}
|
||||||
|
currentLine = this.lines[index]
|
||||||
|
|
||||||
|
if (index === this.lines.length - 1) {
|
||||||
|
nextLine = this.lines[0]
|
||||||
|
} else if (index === this.lines.length) {
|
||||||
|
nextLine = this.lines[0]
|
||||||
|
} else {
|
||||||
|
nextLine = this.lines[index + 1]
|
||||||
|
}
|
||||||
|
// point = this.getPointBetweenLine(currentLine, nextLine)
|
||||||
|
|
||||||
|
this.getRoofRidge(prevLine, currentLine, nextLine)
|
||||||
|
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
getRoofRidge(prevLine, currentLine, nextLine) {
|
||||||
|
console.log(prevLine)
|
||||||
|
console.log(this.getLineDirection(prevLine), this.getLineDirection(currentLine), this.getLineDirection(nextLine))
|
||||||
|
if (this.getLineDirection(prevLine) !== this.getLineDirection(nextLine)) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getPointBetweenLine(line1, line2) {
|
||||||
|
let dVector = this.getDirectionForDegree(line1, line2)
|
||||||
|
let xp = line1.x2, yp = line1.y2
|
||||||
|
|
||||||
|
console.log(xp, yp)
|
||||||
|
|
||||||
|
// let alpha = 45.0 * Math.PI / 180
|
||||||
|
// let a = c * Math.sin(alpha)
|
||||||
|
|
||||||
|
switch (dVector) {
|
||||||
|
case 45:
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'a'
|
||||||
|
}
|
||||||
|
|
||||||
|
getDirectionForDegree(line1, line2) {
|
||||||
|
let degree = this.getLineDirection(line1) + this.getLineDirection(line2)
|
||||||
|
let vector
|
||||||
|
|
||||||
|
switch (degree) {
|
||||||
|
case 'rb':
|
||||||
|
vector = 45
|
||||||
|
break
|
||||||
|
case 'br':
|
||||||
|
vector = 45
|
||||||
|
break
|
||||||
|
case 'lb':
|
||||||
|
vector = 135
|
||||||
|
break
|
||||||
|
case 'bl':
|
||||||
|
vector = 135
|
||||||
|
break
|
||||||
|
case 'lt':
|
||||||
|
vector = 225
|
||||||
|
break
|
||||||
|
case 'tl':
|
||||||
|
vector = 225
|
||||||
|
break
|
||||||
|
case 'rt':
|
||||||
|
vector = 315
|
||||||
|
break
|
||||||
|
case 'tr':
|
||||||
|
vector = 315
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
return vector
|
||||||
|
}
|
||||||
|
|
||||||
|
getLineDirection(line) {
|
||||||
|
let x1, x2, y1, y2, xp, yp
|
||||||
|
x1 = Math.round(line.x1)
|
||||||
|
x2 = Math.round(line.x2)
|
||||||
|
y1 = Math.round(line.y1)
|
||||||
|
y2 = Math.round(line.y2)
|
||||||
|
|
||||||
|
xp = x1 - x2
|
||||||
|
yp = y1 - y2
|
||||||
|
|
||||||
|
if (xp === 0) {
|
||||||
|
if (yp < 0) {
|
||||||
|
return 'b'
|
||||||
|
} else {
|
||||||
|
return 't'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (yp === 0) {
|
||||||
|
if (xp < 0) {
|
||||||
|
return 'r'
|
||||||
|
} else {
|
||||||
|
return 'l'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user