gpt4 book ai didi

node.js - 我是否需要 paper-jsdom-canvas 才能使用来自 nodejs 的 paper.js 中的简化方法?

转载 作者:太空宇宙 更新时间:2023-11-03 23:16:44 29 4
gpt4 key购买 nike

我正在尝试使用 paper.js 优秀的 path.simplify 方法来简化手绘路径,以便在用户完成绘制后生成平滑的曲线。由于这是非 HTML 输出(TV Telestration),我尝试在 Nodejs 中创建一个微服务来获取点并输出结果简化曲线的控制点。

我尝试使用 paper-jsdom,该方法有效并且没有提示,但始终输出所有点都为零坐标的单个段。我想知道我是否应该使用 paper-jsdom-canvas 来获得适当的输出。

这是我正在尝试构建的 Node 模块:

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

最佳答案

我认为你的错误在这里:

for (let point in points) {
let pt = new Point(point.x, point.y);
pts.push(pt);
}

如果,正如我所想,变量points包含一个对象数组,您应该使用:

for (let point of points) {
let pt = new Point(point.x, point.y);
pts.push(pt);
}

注意关键字 of 替换了 for 循环中的 in
您实际上是在遍历键而不是值。

关于node.js - 我是否需要 paper-jsdom-canvas 才能使用来自 nodejs 的 paper.js 中的简化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54554162/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com