我使用2个2D拟合完成了3D路径的样条插值。使用插值条件以及2次可微分的要求,我得到了所需的方程来插入我的3D路径。 然而,我开始意识到,我忽略了这样一个事实:由于障碍物,路径不是单调的,因此无法计算拟合的样条曲线。
在没有单调数据集的情况下,我无法在样条拟合上找到任何东西。有没有办法采纳这个事实? (我发现,这些点必须满足(Schoenberg-Whitney)条件,这对我来说基本上看起来像是单调性,以便通过最小二乘法得到唯一的拟合。)
对收养或不同算法的任何建议?我现在唯一可以找到的是: heremite,它需要端点处的衍生物,这对我的目的来说并不理想。我会喜欢像#34;常规"这样简单的事情。样条(具有连续性条件的三阶多项式)。
我还找到了this question,它只陈述了一些关于厄米多项式的东西(我想避免)。
最后,它用于控制算法,需要隐式定义曲线(非参数)。例如y - p(x) = 0
。对我来说不可能的是:p(t)=y, x(t)
其中t是参数。如果可以消除参数,产生隐式表示,那很好。
答案 0 :(得分:0)
通过简单地将点到点的累积距离作为独立(单调)参数,您可以为任何一系列3D点生成单调性。可以把它想象成连接所有点的分段线性路径p
的长度......
编辑 ...喜欢(伪代码):
p[0] = 0;
p[i] = p[i-1] + sqrt((x[i]-x[i-1])^2 + (y[i]-y[i-1])^2 + (z[i]-z[i-1])^2)
一旦有了这个参数,就可以分别对三个维度(x,y和z)进行三次样条曲线拟合。这样,您的3D曲线拟合可以处理任何可想到的一系列点。使用此路径p
进行样条插值也可以使其更多"物理"因为靠近的点将被视为。
为简单起见 - 特别是如果您的数据点或多或少等间距 - 您可以简单地使用每个点的序数(如0,1,2,3 ......)作为独立的单调递增参数。
答案 1 :(得分:0)
由于路径不是单调的,因此没有(内射)函数可以存在,它描述了它们!
这很容易想到,如果考虑路径,你可以前进,后退和前进。如果没有参数表示(例如时间),则路径不是唯一的。
换句话说:如果是y=sin(x)
,那么现在哪个位置是y = 0
的路径?无限的解决方案当然是x=k*pi
,但在这里很明显,这不是唯一的。