matlab动态演示追逐,打出码演示出来就行

一个人在平面上逆时针方向沿着曲线x^2+y^2=25以恒定的速率v跑步,起点在(5,0)点。这时,一只狗坐在坐标原点处以速率w跑向该人,设狗的运动方向始终指向该人,编写MATLAB文件,以不同的v和w动态演示该追逐过程。

你好同学,代码供参考(人和狗狗的速度都可以更改):

% 追逐
dt = 0.0001;
t = 0:dt:10; % 模拟10s
x1 = nan(size(t)); % 初始化人和狗的位置
y1 = nan(size(t));
x2 = nan(size(t));
y2 = nan(size(t));
x1(1) = 5; % 人初始位置x
y1(1) = 0; % 人初始位置y
x2(1) = 0; % 狗初始位置x
y2(1) = 0; % 狗初始位置y
v = 4; % 4m/s的人
R = 5; % 人绕的圆圈半径
omega = v/R; % 人的角速度
w = 5; % 5m/s的狗狗
for i = 2:length(t) %
    x1p = R*cos(omega*t(i)); % 人在当前时间的位置x
    y1p = R*sin(omega*t(i)); % 人在当前时间的位置y
    d = [x1(i-1)-x2(i-1),y1(i-1)-y2(i-1)]; % 狗指向人的矢量
    if(norm(d)<1e-2) % 如果人和狗相差1cm,那么就说接近了,终止循环
        break;
    end
    dir = d/norm(d); %  狗指向人的单位矢量
    x2p = x2(i-1) + dt*w*dir(1); % 计算狗的位置
    y2p = y2(i-1) + dt*w*dir(2);
    x1(i) = x1p;
    y1(i) = y1p;
    x2(i) = x2p;
    y2(i) = y2p;
    if(mod(i,floor(0.04/dt))==0) % 设置隔0.04s显示1帧
        figure(1); clf;
        plot(x1,y1,'r-',x2,y2,'b-'); hold on
        plot(x1p,y1p,'ro', 'markerfacecolor', 'r', 'markeredgecolor','k')
        plot(x2p,y2p,'bo', 'markerfacecolor', 'b', 'markeredgecolor','k')
        axis equal
        legend('人的路径','狗的路径','人', '狗', 'Location','BestOutside')
        pause(0.000001)
    end
end

img