Я пытаюсь упростить рисованный путь, используя отличный метод path.simplify paper.js для создания плавных кривых после того, как пользователь закончит рисование.Так как это не для вывода в формате HTML (TV Telestration), я пытаюсь создать микросервис в nodejs, чтобы брать точки и выводить контрольные точки полученных упрощенных кривых.
Я пытался использовать paper-jsdom иметод работает и не жалуется, но всегда выводит один сегмент с нулевыми координатами во всех точках.Интересно, должен ли я использовать paper-jsdom-canvas вместо этого, чтобы получить соответствующий вывод.
Вот модуль узла, который я пытаюсь построить:
const Path = require('paper').Path
const Point = require('paper').Point
const Project = require('paper').Project
// the next line produces side effects without which
// the code will not run, but I'm not sure this is the way to go.
let p = new Project()
function simplify (points) {
let pts = []
for (let point in points) {
let pt = new Point(point.x, point.y)
pts.push(pt)
}
let path = new Path({
segments: pts,
strokeColor: 'black',
fullySelected: false
})
path.simplify(10)
let simplePath = []
for (const segment of path.segments) {
// only one segment reaches this point
// with all zeros in all the parameters
console.log(segment.path)
simplePath.push(
{
handleIn: { x: segment.handleIn.x, y: segment.handleIn.y },
handleOut: { x: segment.handleOut.x, y: segment.handleOut.y },
point: { x: segment.point.x, y: segment.point.y }
})
console.log(`
hi : (${segment.handleIn.x}, ${segment.handleIn.y})
ho : (${segment.handleOut.x}, ${segment.handleOut.y})
point: (${segment.point.x}, ${segment.point.y})`)
}
return simplePath
}
module.exports = simplify