一个常见的请求是沿空间中的某条曲线(2个或更多维度)以固定距离内插一组点。用户通常沿曲线有一组点,其中一些点的间距很小,另一些点的间距不太近,他们希望创建沿同一条曲线均匀分布的新点集。
假设插值是分段线性的,这很容易。然而,如果曲线是样条曲线,可能作为点之间的弦弧长度的函数进行插值,这就有点困难了。一个很好的技巧是用描述曲线路径的微分方程来描述问题。然后可以使用ODE解算器进行插值。
作为使用的例子,我将在平面中围绕一个圆圈挑选一组随机的点,然后在沿曲线周围围绕曲线围绕弧形长度同样地间隔开一组新的点。
θ=排序(rand(15,1))*2*pi;
θ(end+1)=θ(1);
px=cos(θ);
py=sin(θ);
100个等间距点,使用样条线插值。
pt=弧间(100,px,py,'样条');
%绘制结果
图(px,py,'r*',pt(:,1),pt(:,2),'b-o')
轴([-1.11.1-1.11.1])
轴相等
网格
xlabel X
伊拉贝尔
标题“蓝色的点在圆周围的弧长上是一致的”
现在还可以返回函数句柄,以在任意点计算曲线本身。同样,CSAPE也是周期(闭合)曲线的一个选项,只要它在matlab安装中可用。
[〜,〜,foft] = Interparc([],px,py,'样条');
foft(0:0.25:1)
ans=
0.98319 0.18257
-0.19064 0.98151
-0.98493 -0.17486
0.18634 -0.98406
0.98319 0.18257
引用为
约翰·德里科(2021年)。弧间(//www.tatmou.com/matlabcentral/fileexchange/34874-interparc),MATLAB中央文件交换。恢复.