如何在paper.js中绘制样条线

时间:2018-06-22 14:03:58

标签: javascript computational-geometry spline paperjs cad

我目前正在一个项目中,以在paper.js画布上显示DXF文件。但是,当我读取DXF文件中的样条线对象时,我对命名以及如何将其转换为paper.js curve对象的方法感到完全困惑。

DXF具有:degreecontrol pointsknow 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"

让我知道是否需要更多信息

1 个答案:

答案 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中足够接近的曲线近似值段。