Animating an m-file to show a rectangle filling up

조회 수: 3 (최근 30일)
Sebastian Lopez
Sebastian Lopez 2020년 3월 3일
답변: Jakob B. Nielsen 2020년 3월 4일
I am trying to create an animation of a rectangle filling up. I already have the code to get a graph of the rectangle:
% A cylindrical tank has a capacity of 100 bottles.
% Created six rectangles within the 3.5 ft by 6 ft tank.
x1=0.5; x2=2.25; y1=1; y2=3;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
hold on;
x1=2.25; x2=4; y1=1; y2=3;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
hold on
x1=0.5; x2=2.25; y1=3; y2=5;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
hold on
x1=2.25; x2=4; y1=3; y2=5;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
hold on
x1=0.5; x2=2.25; y1=5; y2=7;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
hold on
x1=2.25; x2=4; y1=5; y2=7;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
axis([0 5 0 8]);
% Created a percent range between 0% and 100% in 10 divisions.
yline(1,'--','0%');
yline(1.6,'--','10%');
yline(2.2,'--','20%');
yline(2.8,'--','30%');
yline(3.4,'--','40%');
yline(4,'--','50%');
yline(4.6,'--','60%');
yline(5.2,'--','70%');
yline(5.8,'--','80%');
yline(6.4,'--','90%');
yline(7,'--','100%');
% Plot title and axis labels.
title('Bottle Accumulator on the x-y Plane');
xlabel('Width (ft)');
ylabel('Height (ft)');
but I don't know what functions to use to show the animation of the rectangle filling up.
What functions can I use in my m-file to create an animatioin of the rectangle filling up?
Can the function be changed to fill the rectangle until a certain point?

답변 (1개)

Jakob B. Nielsen
Jakob B. Nielsen 2020년 3월 4일
I don't know what kind of animation you are looking for, but something quick and simple would be to insert a pause after every plot call. In this case, you might want to set the x and y axis limits after the first plot, so you get the full picture from the get go. I dont know if this is what you're after?
% A cylindrical tank has a capacity of 100 bottles.
% Created six rectangles within the 3.5 ft by 6 ft tank.
figure
x1=0.5; x2=2.25; y1=1; y2=3;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
xlim([0 5]);
ylim([0 8]);
pause(0.5)
hold on;
x1=2.25; x2=4; y1=1; y2=3;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
pause(0.5)
hold on
x1=0.5; x2=2.25; y1=3; y2=5;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
pause(0.5)
hold on
x1=2.25; x2=4; y1=3; y2=5;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
pause(0.5)
hold on
x1=0.5; x2=2.25; y1=5; y2=7;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
pause(0.5)
hold on
x1=2.25; x2=4; y1=5; y2=7;
x = [x1, x2, x2, x1, x1];
y = [y1, y1, y2, y2, y1];
plot(x, y, 'k');
pause(0.5)
axis([0 5 0 8]);
% Created a percent range between 0% and 100% in 10 divisions.
yline(1,'--','0%');
pause(0.5)
yline(1.6,'--','10%');
pause(0.5)
yline(2.2,'--','20%');
pause(0.5)
yline(2.8,'--','30%');
pause(0.5)
yline(3.4,'--','40%');
pause(0.5)
yline(4,'--','50%');
pause(0.5)
yline(4.6,'--','60%');
pause(0.5)
yline(5.2,'--','70%');
pause(0.5)
yline(5.8,'--','80%');
pause(0.5)
yline(6.4,'--','90%');
pause(0.5)
yline(7,'--','100%');
% Plot title and axis labels.
title('Bottle Accumulator on the x-y Plane');
xlabel('Width (ft)');
ylabel('Height (ft)');

카테고리

Help CenterFile Exchange에서 Labels and Annotations에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by