void era_trajectory_destroy(era_trajectory_p trajectory) { int i; spline_p spline_a = (spline_p)trajectory; for (i = 0; i < sizeof(era_trajectory_t)/sizeof(spline_t); ++i) spline_destroy(&spline_a[i]); }
int processtask(task_t *ptask, task_t *prep, spline_t *pspline) { prep->cmd = ptask->cmd; switch(ptask->cmd) { case SPLINE_INIT: spline_init(pspline, (double_t*)ptask->px, (double_t*)ptask->px + ptask->n/(sizeof(double_t)*2), ptask->n/(sizeof(double_t)*2)); break; case SPLINE_DESTROY: spline_destroy(pspline); break; case SPLINE_GETVAL: spline_getvaluev(pspline, (double_t*)ptask->px, (double_t*)prep->px, ptask->n/sizeof(double_t)); break; } return 0; }
int main() { double_t xs[SIZE_SRC], ys[SIZE_SRC], xt[SIZE_TAR], yt[SIZE_TAR], ye[SIZE_TAR], v; spline_t spline; v=0; for(size_t i=0; i<SIZE_SRC; ++i, v+=STEP_SRC) { xs[i] = v; ys[i] = sin(v) + 2; } spline_init(&spline, xs, ys, SIZE_SRC); v=0; for(size_t i=0; i<SIZE_TAR; ++i, v+=STEP_TAR) { xt[i] = v; yt[i] = sin(v) + 2; ye[i] = spline_getvalue(&spline, v); printf("x %f, target %f, spline %f, error %f\n", xt[i], yt[i], ye[i], yt[i]-ye[i]); } spline_destroy(&spline); return EXIT_SUCCESS; }