我正在尝试使用GNU科学库(GSL)绘制从A到B的平滑路径.我正在使用一个返回少量(在这种情况下为8)不规则间隔点(红色)的API,你可以在下图中看到:

紫色点表示我希望从GSL返回的点数.
首先,这种2D B样条形状是否可以通过GSL获得?我不太了解B-Splines,更不用说2D B-Splines了.我能够让这里显示的B-Splines示例运行并创建一个平滑的.ps文件而没有问题,但该示例使用带有以下代码的统一断点:
/* use uniform breakpoints on [0, 15] */
gsl_bspline_knots_uniform(0.0, 15.0, bw);
Run Code Online (Sandbox Code Playgroud)
在我的情况下,鉴于我给出的数据不稳定且间距不均匀,我是否必须使用非均匀结?我尝试使用gsl_bspline_knots(),以便在下面的测试代码中使用非均匀断点,但我真的不确定这是否是正确的方向.
#define NCOEFFS 8 // not sure what this number should be - number of data points?
#define NBREAK (NCOEFFS - 2)
const size_t nbreak = NBREAK;
int main (void) {
// (example code)...
gsl_vector *non_uniform = gsl_vector_alloc(nbreak);
// create some random breakpoint values
for (i=0; i<nbreak; i++) {
double val = gsl_ran_gaussian(r, 2.0);
printf("val: %f\n", val);
gsl_vector_set(non_uniform, i, val); …Run Code Online (Sandbox Code Playgroud)