问题标签 [splines]

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 投票
0 回答
74 浏览

matlab - 在可变数量的点之间调试样条曲线的构造

给定 x 和 y 中的点数,我想创建与所有点相交并且在交叉点具有相同斜率的样条线。

我的方法是为点的交点建立一组方程,并在交点处规定相等的斜率,然后使用 fsolve() 来确定系数。

然而,在绘制找到的样条曲线时,尽管它们与 x 和 y 中给出的正确点相交,但它们在相交点处的斜率不同。

我一直在尝试调试这个脚本两天的大部分时间,但没有任何运气。有人能指出为什么我的样条曲线没有得到正确的斜率吗?还是 fsolve() 在找到令人满意的解决方案之前退出?

主文件:

eqns.m

eqn.m

0 投票
0 回答
1372 浏览

matlab - 样条导数

我正在使用样条工具箱制作双三次样条,如下所示:

我知道我可以使用http://www.mathworks.com/help/toolbox/curvefit/differentiate.html来区分 x 或 y 方向,但我想要区分的值是结(即 Z)。

这存在吗,还是我必须自己写?

0 投票
1 回答
1085 浏览

delphi - Delphi 的 NURBS 库

您能否推荐一些库来操作可用于 Delphi 的样条曲线?我已经进行了一些搜索,但我发现的都是 C/C++/Python 绑定。我需要的功能是:在 2D 中操作样条线:旋转、平移、镜像、缩放以及相交、插入结、用折线插值样条线。

编辑:

GLScene不是我想要的,因为我需要支持 2D 样条而不需要 3D 曲面。另外我不希望图书馆坚持使用渲染引擎。我想执行某些计算,而 GLScene 不符合我的需要。

0 投票
2 回答
1940 浏览

python - 如何插入 3D 坐标

我有 x,y,z 格式的数据点。它们形成一个封闭流形的点云。如何使用 R-Project 或 Python 对它们进行插值?(如多项式样条)

0 投票
1 回答
3063 浏览

python - scipy splrep 的行为

我有一组数据点,想用样条函数逼近它们。我使用了两个不同的功能:

  1. 来自scipy的 splrep
  2. 和我在这里找到的三次样条函数。

结果看起来像这样

代码如下:

如您所见,splrep的结果远非令人满意。有人可以解释这种行为以及如何从splrep获得合理的近似值吗?

0 投票
1 回答
1054 浏览

java - 仅由点构成的随机曲线

我需要创建一个像这样的随机曲线:

随机曲线

在这张图中有3个例子,标记如下:

  1. 红色椭圆是曲线的起点,
  2. 蓝色椭圆表示结束。
  3. 它们之间是用绿色椭圆标记的点。

我只能使用 Point,因为在制作完其中一个之后,我需要为前一条曲线中的每个 Point 创建另一条小曲线。我尝试使用 sin 函数或 cos 函数,但只有当起点和终点的 x 或 y 点相同时才有效。

有谁知道如何使用 Graphics2D 和 Point 来实现这一点?

0 投票
2 回答
2498 浏览

c++ - Calculating a curve thru any 3 points in a normalzed matrix using C++

If I have a simple 2-D matrix with normalized values on x-axis between 0 and 1 and y-axys between 0 and 1, and I have 3 points in this matrix e.g. P1 (x=0.2,y=0.9), P2 (x=0.5,y=0.1) and P3 (x=0.9,y=0.4).

How can I simply calculate a curve thru this points, meaning having a function which is giving me the y for any x.

I now that there are any number of possible curves thru 3 points. But hey, you know what I mean: I want a smooth curve thru it, usable for audio-sample-interpolation, usable for calculation a volume-fade-curve, usable for calculating a monster-walking-path in a game.

Now I have searched the net for this question about 3 days, and I cannot believe that there is no usable solution for this task. All the text dealing about Catmull-rom-Splines, bezier-curves and all that theroretical stuff has all at least one point which doesn't make it for me usable. For example Catmull-Rom-splines need to have a fix distance between the control-points (I would use this code and set the 4. point-y to the 3. point y) :

But I don't see that x1 to x4 have any affect on the calculation of y, so I think x1 to x4 must have the same distance?

...

Or bezier-code doesn't calcuate the curve thru the points. The points (at least the 2. point) seem only to have a force-effect on the line.

This is better than nothing, but it is 1. very slow (recursive) and 2. as I said doesn't really calculate the line thru the 2. point.

Is there a mathematical brain outside which could help me?

0 投票
1 回答
3816 浏览

function - Matlab-Splines 中的指示函数

好吧,我遇到了一个愚蠢的问题,我自己的工作和互联网搜索都没有真正提供解决方案,所以我想问问有没有人有任何建议。我正在编写一个 Matlab 程序,该程序最终旨在绘制利率曲线,这是通过使用三次 B 样条,然后使用优化器来获得三次 B 样条基础中的系数,并使用此信息绘制图形来完成的。现在我在尝试绘制图表时遇到了一个棘手的小问题。我将在下面提供错误消息和相关代码,但总的来说,发生的事情是这样的:

要对给定度数的 B 样条进行编程,您可以从指标函数开始,然后递归地构建它们。这个指标是关于一些输入变量的(对我来说是时间,但变量实际上是什么并不是特别相关)。当我稍后针对这个变量绘制图表时,使用像 t = (0:1:30) 这样的范围,我收到一个错误,告诉我 || 的操作数 和 && 运算符必须可转换为逻辑标量值。

我进行了一些互联网搜索,发现 && 不适用于矢量输入(我知道我会在尝试绘制图形时将其传递给它),并建议使用 & 代替。我试过了,而是收到一个错误,说我的矩阵尺寸不同意,这对我来说没有意义,因为首先从来没有涉及任何矩阵。所以在这一点上,我不确定解决这个问题的好方法是什么。在 matlab 中是否有一种向量稳健的编程指标函数方法可以进行绘图?

以下是相关代码:

函数 Splines 写在这里:

我使用 && 时收到的错误消息是:

|| 的操作数 和 && 运算符必须可转换为逻辑标量值。

如果 (t>knots(k+4) && t) 样条曲线错误(第 9 行)

样条线错误(第 15 行)样条线 = ((t-knots(k+4))/(knots(k+4+n)-knots(k+4)))*Splines(n-1,k,t) + ((结(k+5+n)-t)/(结(k+5+n)-结(k+5)))*样条(n-1,k+1,t);

样条线错误(第 15 行)样条线 = ((t-knots(k+4))/(knots(k+4+n)-knots(k+4)))*Splines(n-1,k,t) + ((结(k+5+n)-t)/(结(k+5+n)-结(k+5)))*样条(n-1,k+1,t);

样条线错误(第 15 行)样条线 = ((t-knots(k+4))/(knots(k+4+n)-knots(k+4)))*Splines(n-1,k,t) + ((结(k+5+n)-t)/(结(k+5+n)-结(k+5)))*样条(n-1,k+1,t);

InterestRatesHW1 错误(第 88 行) f0 = f0 + x(k+4,1).*Splines(3,k,t);

我只使用 & 时得到的错误是:

错误使用 * 内矩阵尺寸必须一致。

样条线错误(第 15 行)样条线 = ((t-knots(k+4))/(knots(k+4+n)-knots(k+4)))*Splines(n-1,k,t) + ((结(k+5+n)-t)/(结(k+5+n)-结(k+5)))*样条(n-1,k+1,t);

样条线错误(第 15 行)样条线 = ((t-knots(k+4))/(knots(k+4+n)-knots(k+4)))*Splines(n-1,k,t) + ((结(k+5+n)-t)/(结(k+5+n)-结(k+5)))*样条(n-1,k+1,t);

InterestRatesHW1 错误(第 88 行) f0 = f0 + x(k+4,1).*Splines(3,k,t);

我很抱歉问什么是我确定的基本问题,但这变得非常令人沮丧,因此非常感谢任何帮助。

0 投票
3 回答
17640 浏览

java - 如何通过点制作直线曲线

我正在寻找一种通过多个点制作直线曲线的方法。最好使用 3 个点,尽管我认为为了给进入点的线的角度提供上下文,可以说,可能需要更多的点来给曲线提供上下文。

一般来说,一个起点P1,一个控制点P2和一个终点P3,线应该从P1弯到P2,然后从P2弯到P3。

实际上,这是我想要达到的效果的完美示例:

欧文霍尔样条

如果我能做到这一点,我真的会永远感激不尽!

到目前为止,在 Java 中,我尝试过使用QuadCurve2D.DoubleCub icCurve2D.DoublePath2D.Double(将 curveTo 与 Path2D.Double 一起使用)之类的东西,但无济于事 - 绘制的曲线甚至没有接近通过指定的控制点。

这是迄今为止我尝试过的方法的图像:

在此处输入图像描述

这是我用来生成图像中的点和曲线的代码:

我希望曲线通过点的原因是我想“平滑”我写的折线图上顶点之间的过渡。在任何人提到它之前,JFree Chart 不是一个选项。我知道使用了不同类型的曲线和样条曲线,但我没有太多运气来准确理解它们的工作原理或如何实现适合我需要的东西。

我将非常感谢提供的任何帮助 - 提前致谢。

0 投票
2 回答
660 浏览

rotation - 无法从动态 JS 线中获取转换点

我已经能够使用 Kinetic JS 成功绘制一条线,如下所示:

然后我使用以下命令旋转该行:

视觉显示更新。然后我尝试从旋转线中取出转换点,如下所示:

我最终得到了与我输入时相同的点数组。我试图获得偏移和平移,以查看是否可以得出旋转点的绝对坐标,但我没有运气。谁能帮我提取实际的翻译值?