小编Mic*_*rie的帖子

使用GNU Scientific Library(GSL)使用不均匀间隔的点绘制2D B样条曲线路径

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

返回点和GSL的预期结果

紫色点表示我希望从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)

c c++ spline gsl bspline

7
推荐指数
1
解决办法
1432
查看次数

标签 统计

bspline ×1

c ×1

c++ ×1

gsl ×1

spline ×1