jasoncp 2022-11-21 18:09 采纳率: 0%
浏览 31
已结题

实现B样条曲线平滑离散点,如何求曲率

请教各位,有一组离散点,按照其他帖子用matlab实现了B样条曲线平滑,目前想求其曲率,但写的代码跑出来曲率数值很大。
请问各位有没有好的方法?

%% 计算曲率
xx1=abs(diff(path(:,1))); %path里面存着一组节点坐标
xx2=diff(xx1);

yy1=diff(path(:,2));  %求y一阶导数
yy2=diff(yy1);     %求y的二阶导数
xx2(length(xx1)) = xx2(end); % 使数组维度一致 
yy2(length(yy1)) = yy2(end);
curv= abs(xx1.*yy2-xx2.*yy1) ./ ((xx1.^2+yy1.^2).^(3/2));   %求曲率
curv(length(path(:,1))) = curv(end); 
figure(2)

plot(path(:,1),curv,'-r');

曲率结果如图

img

自己写的B样条曲线如图:

img

这是我用matlab自带spline函数拟合出来的曲线,及曲率

img

img

我参考别人的文献,曲率范围都不超过1,想知道代码是不是有问题

img

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月25日
  • 赞助了问题酬金15元 11月24日
  • 创建了问题 11月21日