草庐IT

c++ - 使用 GNU 科学库 (GSL) 使用不均匀分布的点绘制 2D B 样条路径

我正在尝试使用GNU科学库(GSL)绘制从A到B的平滑路径。我使用的API返回少量(在本例中为8个)不规则间隔的点(红色)),您可以在下图中看到:紫色点代表我希望看到从GSL返回的点。首先,这种2DB-Spline形状可以用GSL得到吗?我不太了解B样条曲线,更不用说2DB样条曲线了。我能够获得显示的B样条曲线示例here运行并创建一个流畅的.ps文件没有问题,但该示例使用带有以下代码的统一断点:/*useuniformbreakpointson[0,15]*/gsl_bspline_knots_uniform(0.0,15.0,bw);在我的例子中,鉴于我提供的数据不稳定且间隔不均匀

python - 使用 numpy/scipy 的快速 b 样条算法

我需要在python中计算bspline曲线。我查看了scipy.interpolate.splprep和其他一些scipy模块,但找不到任何可以轻松满足我需要的东西。所以我在下面写了我自己的模块。代码工作正常,但速度很慢(测试函数在0.03秒内运行,考虑到我只要求100个样本和6个控制顶点,这似乎很多)。有没有办法通过一些scipy模块调用来简化下面的代码,这可能会加快速度?如果没有,我可以对我的代码做些什么来提高它的性能?importnumpyasnp#cv=np.arrayof3dcontrolvertices#n=numberofsamples(default:100)#d=c

python - 使用 Python 进行 B 样条插值

我正在尝试使用Python重现B样条的Mathematica示例。mathematica例子的代码是这样的pts={{0,0},{0,2},{2,3},{4,0},{6,3},{8,2},{8,0}};Graphics[{BSplineCurve[pts,SplineKnots->{0,0,0,0,2,3,4,6,6,6,6}],Green,Line[pts],Red,Point[pts]}]并产生我所期望的。现在我尝试用Python/scipy做同样的事情:importnumpyasnpimportmatplotlib.pyplotaspltimportscipy.interpola