在Matlab中动画一个球

时间:2015-01-02 19:20:12

标签: matlab matlab-figure

我有这两个方程式的球: x(t)= v0 * cos(α)* t和 y(t)= h + v0 * sin(α)* t-1/2 g t ^ 2,其中t∈[0,t fi nal]是时间变量,h是高度, v0是初始速度,α是v0与水平面所形成的角度,g = 9.8 m / s ^ 2。楼层在y(x)= 0。

我需要绘制一个小动画,在球场上移动。我现在应该使用,情节,绘画,但我不知道该怎么做。

你能告诉我如何看这个动画吗?

1 个答案:

答案 0 :(得分:2)

首先,这里有一些测试变量,包括重力引起的加速度:

g = 9.8; %// m/s^2
v0 = 2; %// m/s
alpha = pi/6; %// Radians
h = 30; %// Start at 30 metres
t_final = 4.5; %// Seconds
t_vector = 0 : 0.01 : t_final;
最后一行代码中的

t_vector创建了一个点向量,从t = 0的初始时间到结束时间的步长为0.01。有了这些定义,我们的工作就是通过矢量中的每个点并绘制我们的球。接下来,让我们为每个xy创建匿名函数,以使我们的绘图更容易:

x = @(t) v0*cos(alpha)*t;
y = @(t) h + v0*sin(alpha)*t - 0.5*g*t.^2;

接下来你要做的是使用for循环,然后查看t_vector的每个值,直到t_final并绘制单个点。你应该把重点放大,这样我们才能真正看出球的样子:

close all;
figure; hold on;
for t = t_vector
    plot(x(t), y(t), 'b.', 'MarkerSize', 16);
    axis([0 t_final 0 h]);
    pause(0.01);
end

上面的代码将首先关闭我们打开的所有数字,生成一个新的figure并使用hold on,以便我们可以多次调用plot并在没有它的情况下将点添加到图表中每次都擦除。然后,对于每个时间点,我们将图形上的位置绘制为蓝点,然后绘制点16的大小。我们还通过强制执行{{1}来确保轴不会自动调整自身。 }值限制在xt = 0之间。我们还将t = t_final值从y限制为初始起始高度,在我的示例中为30。在每个点,我们暂停0.01毫秒,这样你就可以看到点的绘制。

作为奖励,这就是图中的动画y = 0

enter image description here