matlab控制多边形和相应的样条曲线

文章介绍了MATLAB中用于生成样条曲线的工具,如spcrv命令用于创建基于控制多边形的平滑曲线,而cscvn则提供自然三次样条曲线的插值功能。随着阶数的增加,曲线变得更平滑但可能更偏离原始数据。此外,通过添加额外的控制点,可以影响曲线的转折特性。

样条曲线被广泛用于生成插图,其中只需要一条大致想象形状的平滑曲线。为此,“曲线拟合工具箱”包含一个特殊命令spcrv,它可以独立于工具箱的其他部分使用。
给定平面中的点序列,以及可选的k阶,spcrv通过重复中点节点插入生成k阶的样条曲线,该样条曲线的控制多边形由给定序列指定。
下图显示了这样一个控制多边形,以及相应的3阶样条曲线。

points = [0 0; 1 0; 1 1; 0 2; -1 1; -1 0; 0 -1; 0 -2].';
values = spcrv(points,3);

plot(points(1,:),points(2,:),'k');
axis([-2 2.25 -2.1 2.2]);
hold on
plot(values(1,:),values(2,:),'r','LineWidth',1.5);
legend({'Control Polygon' 'Quadratic Spline Curve'},  'location','SE');

在这里插入图片描述
曲线在控制多边形的中点处接触控制多边形的每一段,并遵循控制多边形勾勒的形状。
提高阶数k将使曲线远离控制多边形,使其更平滑,但也更短。在这里,我们添加了相应的4阶样条曲线。

value4 = spcrv(points,4);
plot(value4(1,:),value4(2,:),'b','LineWidth',2);
legend({'Control Polygon' 'Quadratic Spline Curve' ...
        'Cubic Spline Curve'}, 'location','SE');

在这里插入图片描述
另一方面,要获得插值曲线,可以使用cscvn命令,该命令提供参数化的“自然”三次样条曲线。

fnplt(cscvn(points), 'g',1.5);
legend({'Control Polygon' 'Quadratic Spline Curve' ...
        'Cubic Spline Curve' 'Interpolating Spline Curve'}, ...
        'location','SE');

在这里插入图片描述
通过在第二个控制点(1,0)附近添加点(.95,-.05),我们可以创建一条插值样条曲线,在那里转弯更快。

np = size(points, 2);
fnplt( cscvn([ points(:,1) [.95; -.05] points(:,2:np) ]), 'm',1.5);
plot(.95,-.05,'*');
legend({'Control Polygon' 'Quadratic Spline Curve' ...
        'Cubic Spline Curve' 'Interpolating Spline Curve' ...
        'Faster Turning Near (1,0)'}, ...
        'location','SE');
hold off

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只佳佳怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值