在Matlab中设置球的动画

在Matlab中设置球的动画,matlab,matlab-figure,Matlab,Matlab Figure,我有一个球,上面有两个方程: x(t)=v0*cos(α)*t和 y(t)=h+v0*sin(α)*t− 1/2燃气轮机^2,其中t∈ [0,t最终]是时间变量,h是高度,v0是初始速度,α是v0与水平面的夹角,g=9.8 m/s^2。楼层位于y(x)=0处 我需要画一个小球在情节上移动的小动画。我现在应该用,绘图,绘图,但我不知道怎么做 你能告诉我如何制作这个动画吗?首先,这里有一些测试变量,包括重力引起的加速度: g = 9.8; %// m/s^2 v0 = 2; %// m/s alph

我有一个球,上面有两个方程: x(t)=v0*cos(α)*t和 y(t)=h+v0*sin(α)*t− 1/2燃气轮机^2,其中t∈ [0,t最终]是时间变量,h是高度,v0是初始速度,α是v0与水平面的夹角,g=9.8 m/s^2。楼层位于y(x)=0处

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


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

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

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\u向量的每个值,直到
t\u 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
上面的代码将首先关闭我们打开的任何图形,生成一个新的
图形
,并使用
按住
,以便我们可以多次调用
绘图
,并将点附加到图形中,而不必每次擦除。然后,对于每个时间点,我们在图上绘制一个蓝色圆点的位置,然后将圆点的大小设为16。我们还通过强制将
x
值限制在
t=0
t=t\u final
之间,确保轴不会自动调整。我们还将
y
值从
y=0
限制到初始起始高度,在我的示例中为30。在每个点上,我们暂停0.01毫秒,以便您可以看到点的图形

作为奖励,这是作为动画的
gif


@3abcDEF3我的荣幸!这很有趣。祝你好运@chappjc哈哈哈,天哪。我过去常常在白天不停地玩那个游戏。这样的回忆!谢谢你的投票:)还有:!!!有关使用数字集成和事件检测的更高级版本,请参阅演示。在命令窗口中键入
edit ballode
。您需要稍微调整动画的大小以满足您的需要。