Sto provando ad utilizzare la GNU Scientific Library (GSL) per tracciare un percorso uniforme da A a B. Sto usando un API che restituisce un numero piccolo (8 in questo caso) di punti irregolarmente distanziati (in rosso), che si può vedere nella figura seguente:Uso di GNU Scientific Library (GSL) per disegnare un tracciato B-Spline 2D utilizzando punti non equamente distanziati
i punti viola rappresentano i punti che vorrei vedi restituito da GSL.
In primo luogo, questo tipo di forma B-Spline 2D è ottenibile utilizzando GSL? Non so molto su B-Splines, per non parlare delle B-Spline 2D. Sono stato in grado di ottenere l'esempio B-spline mostrato here esecuzione e la creazione di un file .ps liscio senza problemi, ma che esempio utilizza i punti di interruzione uniformi con il seguente codice:
/* use uniform breakpoints on [0, 15] */
gsl_bspline_knots_uniform(0.0, 15.0, bw);
Nel mio caso, visto che i dati da me ho dato è irregolare e non equidistante, dovrei usare nodi non uniformi? Ho provato a utilizzare gsl_bspline_knots()
, per utilizzare punti di interruzione non uniformi all'interno del seguente codice di test, ma non sono sicuro se questa sia la direzione giusta oppure no.
#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);
}
gsl_bspline_knots(non_uniform, bw);
// (more example code)...
}
ulteriormente più, come faccio tradurre l'esempio precedente per disegnare B-spline in 2D x/y coordinate spazio? Se GNU Scientific Library non è adatto a questo, qualcuno potrebbe suggerire una libreria C/C++ più adatta?
Qualsiasi aiuto o indicazioni nella direzione sarebbe molto apprezzato.
La ringrazio molto per la risposta in profondità di Vinicio. Probabilmente mi ci vorrà un giorno o due per digerirlo e comprenderlo davvero. Per me è chiaro che ho bisogno di imparare molto di più riguardo ai fondamenti delle spline. –
Se leggete con attenzione l'esempio nella documentazione GSL, allora si vedrà che l'attuazione pratica della 1D non parametrica fit b-spline non è molto complicato. Seguilo per ottenere f_1 (t) e f_2 (t). –