我有这两个方程式的球: 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。
我需要绘制一个小动画,在球场上移动。我现在应该使用,情节,绘画,但我不知道该怎么做。
你能告诉我如何看这个动画吗?
答案 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。有了这些定义,我们的工作就是通过矢量中的每个点并绘制我们的球。接下来,让我们为每个x
和y
创建匿名函数,以使我们的绘图更容易:
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}来确保轴不会自动调整自身。 }值限制在x
到t = 0
之间。我们还将t = t_final
值从y
限制为初始起始高度,在我的示例中为30。在每个点,我们暂停0.01毫秒,这样你就可以看到点的绘制。
作为奖励,这就是图中的动画y = 0
: