我正在用 C++ 进行样条插值。我使用了这里的代码:http: //tehc0dez.blogspot.ch/2010/04/nice-curves-catmullrom-spline-in-c.html(代码也链接在那个页面上,它在github上) . 该应用程序适用于闭合轮廓,因为它将前三个点复制到末尾。
但在我的情况下,我需要能够制作一个“开放”的形状——或者更确切地说是线——,其中第一个和最后一个点没有连接。
我的理解是,由于 Catmull-Rom 样条曲线是三次的,如果不添加任何额外的点,我将无法计算第一段和最后一段的插值点。
我读到插值这两个段中的点的常用方法是使用二次插值。
不幸的是,我无法理解如何做到这一点。我已经找到了如何进行二次贝塞尔近似,但这不是我想要做的,因为我不想引入任何额外的支持点。
我找到了这个网站:http ://dafeda.wordpress.com/2010/09/01/newtons-divided-difference-polynomial-quadratic-interpolation/这很好地解释了如何进行二次插值。但我不知道如何根据我的情况调整它,我想计算一个新点而不仅仅是 y。
任何帮助,将不胜感激。谢谢 !