Matlab 沿着曲线的动态图制作


文章目录

  • 前言
  • 一、核心理念
  • 二、示例代码
  • 三、效果展示


前言

如果你想制作沿着某已知曲线轨迹移动的动态图展示,那这篇文章可能对您有些许帮助。
前段时间课题组汇报研究进展,为了想更好地呈现出最近的研究内容,所想办法制作沿着插值曲线的切线变化动态图。


一、核心理念

经过我这段时间在CSDN里学习动态图制作,总结出自己的心得:动态图无非就是将每一帧的画面连续呈现出来,每一帧的内容覆盖掉上一帧的内容,然后把每帧变化的幅度进行尽可能地缩小(X轴步长尽量小),就会从视觉上带来连续变化的感觉。

二、示例代码

例子以曲线上连续点的切线做出动态切线效果
先对若干个已知点进行Hermite两点三次插值,输出以X轴步长为0.1的数据集,利用前一组XY坐标数据的差距进行放大,使之形成切线。
我做的是航速航向的切线,我就偷懒直接把成果复制过来啦!有需要的伙伴可改动后自用。

clc;close all;clear;
set(gcf,'position',[0 0 1920 1080])  
%% C、S拟合 TCS=[-14;-10;-8;-6;-5;-4;-3;-2;-1;0]C=[200.8;208;215.7;208.4;208.6;209.2;212.1;191;170.1;168.3]S=[12.3;12.3;11.9;11.9;12;11.2;10.6;9.5;7.5;6.7]h=0.1   % 步长xx=[-20:h:0]C_acc=pchip_cs(TCS,C,xx)        % C、S 拟合函数S_acc=pchip_cs(TCS,S,xx)        % C、S 拟合函数k = diff(C_acc)/ h;             % 一阶差分求近似一阶导数xx = xx(1: end - 1);            % 更新定义域C_acc = C_acc(1: end - 1);      % 更新值域S_acc = S_acc(1: end - 1);      % 更新值域%% 画动态图for i = 1:length(xx)yyaxis left; % 激活左边的轴plot(xx, C_acc,'--');hold on       % 画曲线scatter(TCS,C,'s');hold onhold onaxis([-20 0 160 230])              % 设置坐标轴可视区间set(gca,'xtick',-20:1:0)xlabel('碰撞前时间(分)');ylabel('航向(°)','FontSize',13); % 给左y轴添加轴标签grid on% 画航向切线if i<numel(xx)-1diff=C_acc(i)-C_acc(i+1)x_left=xx(i)-13*h               % 左边端点y_left=C_acc(i)+diff*13x_right=xx(i)+13*h              % 左边端点y_right=C_acc(i)-diff*13line_C=plot([x_left x_right],[y_left y_right],'k-','linewidth',1);hold on   % 画切线scatter_C=scatter(xx(i),C_acc(i),'k*');hold onhold offendyyaxis right; % 激活右边的轴plot(xx, S_acc,'--');hold on        % 画曲线scatter(TCS,S,'rs');hold onhold onaxis([-20 0 6 13])                  % 设置坐标轴可视区间ylabel('航速(kn)','FontSize',13); % 给右y轴添加轴标签% 画航速切线if i<numel(xx)-1diff=S_acc(i)-S_acc(i+1)x_left=xx(i)-13*h               % 左边端点y_left=S_acc(i)+diff*13x_right=xx(i)+13*h              % 左边端点y_right=S_acc(i)-diff*13line_S=plot([x_left x_right],[y_left y_right],'k-','linewidth',1);hold on   % 画切线scatter_S=scatter(xx(i),S_acc(i),'k*');hold onhold offif i==numel(xx)-2delete(line_S)delete(scatter_S)endendm(:,i) =getframe;                   % 得到当前帧end

三、效果展示

曲线的切线动态效果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部