Matlab 画图描述一个球的反弹轨迹

2025-05-14 04:09:34
推荐回答(2个)
回答1:

%% Q1
g = 9.81;
alpha = 25*pi/180;
v0 = 20/.8;
theta = 30*pi/180;
N = 100;

p = [0 0 0];
for i = 1:5
    v0 = v0*.8;
    x0 = p(end, 1);
    y0 = p(end, 2);
    vx = v0*sin(theta)*cos(alpha);
    vy = v0*sin(theta)*sin(alpha);
    vz = v0*cos(theta);
    for t = linspace(0, 2*vz/g, N)
        p = [p; x0+vx*t y0+vy*t vz*t-g*t^2/2];
    end
end

p(1, :) = [];
plot3(p(:, 1), p(:, 2), p(:, 3));

xlabel('x');ylabel('y');zlabel('z');
title('Path');

%% Q2
v0 = 20/.8;
p = [0 0 0];
flag = true;
while flag
    v0 = v0*.8;
    x0 = p(end, 1);
    y0 = p(end, 2);
    vx = v0*sin(theta)*cos(alpha);
    vy = v0*sin(theta)*sin(alpha);
    vz = v0*cos(theta);
    for t = linspace(0, 2*vz/g, N)
        x = x0+vx*t;
        y = y0+vy*t;
        if x>=85 || y>=40
            flag = false;
            break
        end
        p = [p; x y vz*t-g*t^2/2];
    end
end

p(1, :) = [];
figure;
plot3(p(:, 1), p(:, 2), p(:, 3));

xlabel('x');ylabel('y');zlabel('z');
title('Path');

回答2:

稍等! 我需要点时间!