问题标签 [bspline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
234 浏览

r - 在 bs-call 中指定钳制结向量

我打算将钳位 b 样条拟合到 R 中的一组控制点,但在理解knotsbs 中参数的使用时遇到了困难。给定一组控制点:

我根据路径的距离独立地拟合 x 和 y:

但我想提供一个开放的统一节点向量,以便将拟合锚定到第一个和最后一个点 - 使用df不支持这一点。

据我了解,对于我给定的一组点,以及样条曲线的 3 度,必须有(12-1)+3+2 = 16结(每 m=n+p+1,对于#knots=m+1,#control=n+1, degree=p),所以对于一个钳位样条,这应该是一个很好的节点向量:

使用它会给出一些疯狂的数字,以及关于排名不足的警告,所以很明显我一定是在某种程度上弄错了:

给定一组控制点和度数,指定节点向量的正确方法是什么?

0 投票
0 回答
337 浏览

r - 基于控制路径的用于绘制而不是预测的 b 样条

我试图通过两个单独的问题来解决我的一般问题:在 bs-call和Fit a B spline to a control path中指定夹紧的结向量。对这些问题的回应使我重新制定了更大的问题,我现在将其发布。

我想要完成的是(在 R 中),给定一组(非单调)控制点,我如何沿着控制点给出的路径绘制 b 样条曲线。b 样条必须在两端夹紧。这纯粹是出于图形目的。

注意:我不是要根据控制点来预测值。使用 和 的组合,predict将 B 样条曲线拟合到控制路径中所建议的那样,会导致 ab 样条曲线尝试通过控制点(这不是点) - 特别是如果设置或使样条曲线被钳位,这种方法导致过度拟合,样条将通过每个控制点。lmbsdfknots

最后,该方法将应用于 100 或 1000 组单独的控制点,因此算法效率是一个因素,尽管目前我只是在寻找一种方法来完成它。

玩具数据(与链接问题相同):

所有这些都是为了在 R中计算Hierarchical Edge Bundles 。

编辑:

好的,所以我似乎无法访问在底层使用的底层 b 样条实现(或者我可能没有足够努力)。无论如何,我最终在Jason Yu-Tseh Chi的 de Boor 算法的启发下制作了自己的基于 Rcpp 的实现。这样做的好处是我可以将其矢量化,因此可以一次性构建多条路径。这将是即将推出的 CRAN 包(hierarchicalSets)的一部分,但我很乐意与任何对此表示兴趣的人分享它(太长,无法在此处发布)......

更新:

对于对此感兴趣的任何人,样条绘图将在ggforce扩展包中实现为 ggplot2 的 geom/stat 扩展

0 投票
0 回答
1753 浏览

r - 在 R 中绘制 B 样条曲线

我正在尝试为具有 40 个内部结的 106 数据集创建 4 阶 B 样条基础。到目前为止,我所看到的所有绘制的基函数都由非常平滑且分布良好的曲线组成,而我的曲线很尖,通常看起来很丑。与结相比,这是数据点比率如此之低的特性,还是我做错了什么?

如果它是一个属性,我应该在创建样条基础之前生成更多数据吗?

更多尖峰基函数

0 投票
0 回答
94 浏览

matlab - 避免二维 bspline 曲面插值中的循环 matlab

我想加快我的代码。我总是使用矢量化。但在这段代码中,我不知道如何避免for-loop. 我真的很感激提示如何进行。

非常感谢你的时间。

这是完整的示例,是二维空间中的三次 B 样条曲面插值算法。

0 投票
0 回答
176 浏览

c# - 使用 MathDotNet 的 BSpline 逼近

MathDotNet 是否具有使用 b 样条进行数据近似的能力?不幸的是,我在文档中找不到任何东西!

0 投票
2 回答
7255 浏览

python - 使用 numpy/scipy 的快速 b 样条算法

我需要在 python 中计算 bspline 曲线。我查看了 scipy.interpolate.splprep 和其他一些 scipy 模块,但找不到任何可以满足我需要的东西。所以我在下面写了我自己的模块。代码运行良好,但速度很慢(测试函数运行时间为 0.03 秒,考虑到我只要求 100 个具有 6 个控制顶点的样本,这似乎很多)。

有没有办法通过一些 scipy 模块调用来简化下面的代码,这可能会加快它的速度?如果没有,我可以对我的代码做些什么来提高它的性能?

下面的两张图片显示了我的代码在两个关闭条件下返回的内容: 开放曲线 闭合曲线

0 投票
1 回答
285 浏览

math - 查找曲率超过预定义值的 NURBS 曲线部分

我试图找到 NURBS 曲线的尖角。对于这个问题,我定义了一个极限曲率。我试图在曲线上找到曲率高于此值的部分。一种选择是在曲线上插值并计算所有值的曲率,但这可能需要时间并且可能会遗漏一些尖点。关于如何以有效方式找到这些部分的任何想法?

0 投票
1 回答
712 浏览

python - 权重不适合给定曲线的 scipy splrep()

使用 scipy 的splrep我可以轻松拟合测试正弦波:

样条正弦波图

splrep文档指出weight 参数的默认值为np.ones(len(x)). 但是,绘制此图会导致完全不同的图:

用 splev 和权重绘图

该文档还指出,s当给出权重数组时,平滑条件是不同的 - 但即使在设置s=len(x_spl) - np.sqrt(2*len(x_spl))(没有权重数组的默认值)时,结果也不严格对应于图中所示的原始曲线。

我需要在上面列出的代码中进行哪些更改才能使带有权重数组的插值(如上所列)输出与没有权重的插值相同的结果?我已经用 scipy 0.17.0 对此进行了测试。带有测试 IPython 笔记本的要点

0 投票
4 回答
1062 浏览

python - 从 bspline 中提取圆弧/圆定义

我必须解码可以将 3d 圆定义为样条曲线的 STEP cad 文件。我希望能够解码样条曲线是圆弧还是圆。

起初我有步骤 B_SPLINE_CURVE_WITH_KNOTS 元素。

所以如果我是对的,我解码了:
58 个控制点
29 个节数
29 个节数
3 个
闭合曲线参数 = True

现在,想法是将其转换为贝塞尔曲线以找到弧/圆,但我被困在这些参数面前。

0 投票
1 回答
183 浏览

interpolation - julia - Interpolations.jl 为向量抛出“错误:InexactError()”,而不是点

我在二维矩阵上插值J

如您所见,我只是沿第一个维度进行插值。第二维必须在网格上。我有一个要插值的点向量。

我这样调用插值函数:

并得到以下错误

但是,我可以使用输入的下半部分等于 1 进行插值。所以这不可能是类型问题(据我所知)。

当我包含任何大于 1.0 的点时,事情就会崩溃,就像第一个例子一样。但是,我可以自行在其中一个问题点进行插值。

但是如果在一个数组中J_itp[ Np_args[1,71]*ones(3,1), 1],事情会像以前一样崩溃。

这是一个错误还是我做错了什么?最近安装Pkg.add("Interpolations"),OSX - 优胜美地。朱莉娅版本 0.4.3