Matlab弹跳球在盒子

25次浏览(最近30天)
达科塔尼尔森
达科塔尼尔森 2021年5月27日
编辑: 1月 2021年5月27日
嘿,伙计们,我是matlab的新手,我正在做一个脚本,将创建一个20x20的盒子,并有一个球连续地从墙上反弹。程序会要求用户输入速度的大小和速度矢量与x轴之间的角度。然后,它将在图形窗口中计算和绘制球的位置。
到目前为止,这是我得到的。我把球正确地弹到右侧和顶部。但是球在左边和下面的移动不够远。这是代码。
集(gca),“XLim”-10年[10],“YLim”, -10年[10]);
广场
球= animatedline (“颜色”“r”“标记”“o”“MarkerSize”12“MarkerFaceColor”“r”);
hx0 = 0。
Hy0 = 0.05 /根号2;
hx = hx0;
hy = hy0;
xl = 2% .02点
xr = 9.65
yb = xl;
欧美= xr;
x = 1
y = 1
1 = = 1
如果x < xl
hx = hx0
结束
如果x > xr
hx = -hx0;
结束
如果y < yb
hy = hy0;
结束
如果y >欧美
hy = -hy0;
结束
X = X + hx;
Y = Y + hy;
clearpoints(球);
addpoints(球,x, y);
drawnow;
暂停(幅)
结束

答案(3)

杰夫•海斯
杰夫•海斯 2021年5月27日
编辑:杰夫•海斯 2021年5月27日
达科塔-你的斧头限制被设置为
集(gca),“XLim”-10年[10],“YLim”, -10年[10]);
但是您在代码中为方框设置的限制是不同的
xl = 2% .02点
xr = 9.65
yb = xl;
欧美= xr;
我认为你可以重新设置坐标轴的极限一旦你设置了以上四个变量
集(gca),“XLim”(xl xr),“YLim”, yb欧美);
或者只是设坐标轴的极限
xl = -10;
xr = 10;
yb = xl;
欧美= xr;

1月
1月 2021年5月27日
编辑:1月 2021年5月27日
你的点从[1,1]开始,但它在这个奇怪的极限处改变方向:
xl = 2;% .02点
xr = 9.65;
yb = xl;
欧美= xr;
带有调整限制的简化版本:
轴(“XLim”-10年[10],“YLim”-10年[10],“NextPlot”“添加”);
广场
hx = 0.05;
Hy = 0.05 /根号(2);
xl = -9.65;
xr = 9.65;
yb = xl;
欧美= xr;
x = 1;
y = 1;
k = 1:5000% while 1 == 1
如果X < xl || X > xr
hx = hx;
结束
如果Y < yb || Y > yt
hy =衔接;
结束
X = X + hx;
Y = Y + hy;
情节(x, y,“。”);
结束

斯科特·麦肯齐
斯科特·麦肯齐 2021年5月27日
除了 animatedline。 你可以用 矩形 曲率 属性设置为1。但是,考虑到你采取的方法和你问题中的问题—— 球在左边和下面的移动不够远 ——改变
xl = 2;
xl = -10;按标记宽度调整

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!