clearing a figure
10 views (last 30 days)
Show older comments
sir,
I want to erase the previous figure before the next figure.for this i have used erase mode but its not still i am getting previous figure in the graph so i tried to use clf but it provide flickering.. so , can anyone help me in this and tell me why erasemode not working or anyother method to remove previous image
thank you
x(5) = 6;y(5) = 3 ;z(5) = 6;
x(4) = 6;y(4) = 0;z(4) = 6;
x(3) = 6;y(3) = -3;z(3) = 6;
x(6) = 0;y(6) = 3;z(6) = 0;
x(1) = 0;y(1) = 0;z(1) = 0;
x(2) = 0;y(2) = -3;z(2) = 0;
x = x';
y = y';
z = z';
f = patch(x,y,z,'Y');
set(f,'FaceLighting','phong','EdgeLighting','phong');
set(f,'EraseMode','normal');
camlight;
grid on;
xlim([0,6]);
ylim([-3,3]);
zlim([0,6]);
p = -1.5*pi;
q = -pi/2;
r = 0;
t = -37.5;
pause(1);
clf;
for i = 1:1:5
pause(0.1);
s = 5;
p = p + (0.0175*s);
q = q + (0.0175*s);
x(1)=0; y(1) =0;z(1) =0;
x(6) = 3*cos(p); y(6) = 3*sin(p); z(6) = 0;
x(2) = 3*cos(q); y(2) = 3*sin(q); z(2) = 0;
x(5) = 6+3*cos(p); y(5) = 3*sin(p); z(5) = 6;
x(3) = 6+3*cos(q); y(3) = 3*sin(q); z(3) = 6;
x(4) = 6; y(4) =0;z(4) = 6;
u = patch(x,y,z,'Y');
set(u,'FaceLighting','phong','EdgeLighting','phong');
set(u,'EraseMode','normal');
view(t,30);
camlight
grid on;
xlim([-4,10]);
ylim([-4,4]);
zlim([0,6]);
pause(1);
drawnow;
clf;
end
0 Comments
Answers (3)
Gbola
on 9 Jun 2012
delete(handles.figure1); Where figure1 is the name given to the figure i question.
0 Comments
Walter Roberson
on 9 Jun 2012
The flickering is because you have a pause() at the beginning of the loop; on the second and other iterations of the loop, that pause() is happening just after you clf(). A pause() does not just delay: it also triggers a screen update.
The pause(1) at the end of your loop is triggering a screen update, so the drawnow() after it and before the clf() is not doing anything useful there. drawnow() is generally a good idea, but it happens that pause() also draws.
1 Comment
Jan
on 6 Aug 2021
Edited: Jan
on 8 Aug 2021
A simplified version of your code without clf and flickering:
x = [0; 0; 6; 6; 6; 0];
y = [0; -3; -3; 0; 3; 3];
z = [0; 0; 6; 6; 6; 0];
f = patch(x,y,z,'Y');
set(f,'FaceLighting','phong','EdgeLighting','phong');
camlight;
grid on;
xlim([0,6]);
ylim([-3,3]);
zlim([0,6]);
p = -1.5 * pi;
q = -pi / 2;
t = -37.5;
s = 5;
pause(1);
view(t, 30);
xlim([-4,10]);
ylim([-4,4]);
for i = 1:5
p = p + (0.0175 * s);
q = q + (0.0175 * s);
x = [0; 3*cos(q); 6+3*cos(q); 6; 6+3*cos(p); 3*cos(p)];
y = [0; 3*sin(q); 3*sin(q); 0; 3*sin(p); 3*sin(p)];
z = [0; 0; 6; 6; 6; 0];
set(f, 'XData', x, 'YData', y, 'ZData', z);
pause(1);
end
0 Comments
See Also
Categories
Find more on Lighting, Transparency, and Shading in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!