我目前正在一个项目中,以在paper.js
画布上显示DXF文件。但是,当我读取DXF文件中的样条线对象时,我对命名以及如何将其转换为paper.js curve
对象的方法感到完全困惑。
DXF具有:degree
,control points
和know values
Paper.js具有:http://paperjs.org/reference/curve/
以下是DXF样条数据对象的示例:
controlPoints:(15) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}],
degreeOfSplineCurve:5,
handle:"100",
knotValues:(21) [0, 0, 0, 0, 0, 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 1, 1, 1, 1, 1, 1],
layer:"0",
numberOfControlPoints:15,
numberOfFitPoints:0,
numberOfKnots:21,
planar:true,
type:"SPLINE"
让我知道是否需要更多信息
答案 0 :(得分:0)
DXF曲线实现为任意程度的非均匀有理B样条(NURBS https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline),而paper.js仅支持三次贝塞尔曲线。在Paper.js中,贝塞尔曲线的一段通过点和handleIn和handleOut向量定义。参见http://paperjs.org/reference/segment/
NURBS是比Bezier更通用的表示形式,因此可能无法显示任何具有精确Bezier曲线的NURBS,但是您仍然可以使用Bezier曲线或直线找到DXF中足够接近的曲线近似值段。