首先,这里有一些测试变量,包括重力加速度:
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。我们还确保轴不会通过强制 x 值自动调整自身限制在 t = 0 到 t = t_final 之间。我们还将y 的值从y = 0 限制到初始起始高度,在我的示例中为30。在每个点,我们都会暂停 0.01 毫秒,以便您可以看到点的绘制。
作为奖励,这就是动画gif 中的人物形象: