【问题标题】:C# Spline Interpolation for interpolating a key between array of pointsC# Spline Interpolation 用于在点数组之间插值
【发布时间】:2015-05-25 06:55:43
【问题描述】:

我需要一个插值函数来插值:

var times = new List<double>();
var offsets = new List<double>();
..
..
..//I fill times and offsets arrays with some points
..
var newTime= splineInterpolate(cursorOffset, offsets.ToArray(), times.ToArray())

【问题讨论】:

  • 我建议对最近的 4 个(在最常见的三次样条的情况下)点使用 Lagrange 插值
  • 我认为堆栈溢出不是为我搜索代码 sn-p 站点。您自己的实现是否有具体问题?
  • @adirano:我同意你的看法...这就是为什么我删除我的答案...在提出问题之前我们应该花点力气
  • @GoodLuck 我知道 stackoverflow 不适合代码 sn-ps,但老实说,我尝试了几个有错误的插值 sn-ps,猜想像你这样的人可以帮助我 :) 所以请分享你的回答。谢谢
  • :) 我认为 eviltak 的回答已经足够好了!

标签: c# algorithm math interpolation spline


【解决方案1】:

这取决于你想要什么样的插值。如果不想插值函数通过控制点,可以使用Bezier curve(可以选择曲线的顺序)。

如果您希望曲线通过控制点,一个流行的选择是cubic Hermite spline。 Hermite 样条有多种类型,如基数样条和 catmull-rom 样条(C1 和 C2 连续)。

如果您只是做一个简单的 Google 搜索,您会遇到数以千计的样条结果,这些样条是用 C# 提供的实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 2021-08-04
    • 2022-12-10
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多