一个常见的要求是在空间(2维或更多维)的某条曲线的固定距离上插入一组点。用户通常在一条曲线上有一组点,其中一些点的间距很近,另一些点的间距不那么近,他们希望创建一个沿着同一条曲线均匀间距的新集合。
当插值假定为分段线性时,这很容易。然而,如果曲线是条样条,也许插值为点之间的弦弧长度的函数,这就有点困难了。一个很好的方法是用微分方程来描述沿着曲线的路径。然后可以使用ODE求解器进行插值。
作为一个使用示例,我将在平面上随机选择一组围绕圆的点,然后生成一组新的点,这些点按照沿曲线的弧长等距分布,也就是围绕圆的周长。
θ=排序(兰德(15日1))* 2 *π;
θ(终端+ 1)=θ(1);
px = cos(θ);
py =罪(θ);
100个等距点,使用样条插值。
pt = interparc (100 px, py,样条);
%绘制结果
情节(px, py, r *, pt (: 1), pt(:, 2),“这”)
轴([-1.1 1.1 -1.1 1.1])
轴平等
网格
包含X
ylabel Y
标题“蓝色的点在圆周围的弧长是一致的”
现在,您还可以返回一个函数句柄来在任意点计算曲线本身。同样,cape也是周期性(闭合)曲线的一个选项,只要它在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
引用作为
约翰D 'Errico(2021)。interparc(//www.tianjin-qmedu.com/matlabcentral/fileexchange/34874-interparc), MATLAB中央文件交换。检索.