我在3D中有n
点(20k到30k),我想用三次样条插值它们。这里的问题是我不会同时拥有所有这些点,它们将被发送给我。所以我不想等到收到所有这些才开始插值。
因此,我选择将这些点拆分为子集,插入第一个点子集,使用它,然后按时间开始插入下一个点子集,依此类推
(将这些点拆分为数百个点n1,n2,...
的子集,并找到每个子集的样条线,以便结果与n
点样条曲线的结果相同。)
我认为在计算过程中重叠这些子集足以做到这一点,但似乎没有。你有什么建议来解决这个问题?
答案 0 :(得分:1)
在整个点序列上执行插值样条的计算,并且具有重叠的两个单独的半部的结果将略微不同。请注意,例如,第一个样条曲线的最后一个点的边界条件可能包括预定义偏差或零曲率,而第二个样条曲线的相同部分则计算以提供连续性。
您可以尝试计算重叠区域的某种平滑过渡。
修改强> 问题更新后 - 我没有看到平行治疗与您的问题之间的关系。
相反,你可以连接具有C1连续性的子范围:
计算第一组点的样条插值。使用自由端条件 - 零曲率。记住终点的偏差(线性系数)。
对于下一组,使用预定义的起始偏差计算样条插值 - 从最后一组开始,再次结束零曲率条件。
BTW,数千个点的样条插值应该非常快(它是线性算法)。这真的是瓶颈吗?答案 1 :(得分:1)
您可以随时使用可用点(可能以正确的顺序!)开始插值。三次样条插值是一个非常稳定的过程,当您添加更多点时,大部分曲线保持不变。
如果你担心的是你想避免多次重做整个计算,我想这对于有几个重叠(比如说20分)的几个部分是足够的,并且丢弃所有部分的10个极值点的结果