How to create triangle and animate it?
    3 views (last 30 days)
  
       Show older comments
    
I'm using this code to start but hasnt worked. patch command is giving error and not sure how to resolve it. Please help.
w0 = 1 ;
    w1 = 0.5 ;
    N = 5 ;
    ww = linspace(w1,w0,N) ;
    W = [fliplr(ww) ww] ;
    ar=0.866; % Aspect ratio for equilateral triangle
    h=ar*W;%height of triangle
    for i = 1:length(W)
         x=[0 W W/2];%x coordinates of vertices
         y=[0 0 h];%y coordinates of vertices
        patch(x,y,'white')
        set(gca,'Color','k','xticklabel',[],'yticklabel',[])
        drawnow
        pause(0.1)
    end
4 Comments
  Rik
      
      
 on 3 Oct 2020
				I'm using this code to start but hasnt worked. patch command is giving error and not sure how to resolve it. Please help.
w0 = 1 ;
w1 = 0.5 ;
N = 5 ;
ww = linspace(w1,w0,N) ;
W = [fliplr(ww) ww] ;
ar=0.866; % Aspect ratio for equilateral triangle
h=ar*W;%height of triangle
for i = 1:length(W)
x=[0 W W/2];%x coordinates of vertices
y=[0 0 h];%y coordinates of vertices
patch(x,y,'white')
set(gca,'Color','k','xticklabel',[],'yticklabel',[])
drawnow
pause(0.1)
end
Accepted Answer
  Ameer Hamza
      
      
 on 2 Sep 2020
        Try this
w0 = 1 ;
w1 = 0.5 ;
N = 5 ;
ww = linspace(w1,w0,N) ;
W = [fliplr(ww) ww] ;
ar=0.866; % Aspect ratio for equilateral triangle
h=ar*W;%height of triangle
fig = figure();
ax = axes();
set(ax,'Color','k','xticklabel',[],'yticklabel',[])
ax.XLim = [0 1];
ax.YLim = [0 1];
p = patch([0 0 0], [0 0 0], 'w');
for i = 1:length(W)
    x = [0 W(i) W(i)/2];%x coordinates of vertices
    y = [0 0 h(i)];%y coordinates of vertices
    p.Vertices = [x.' y.'];
    drawnow
    pause(0.1)
end
2 Comments
  Ameer Hamza
      
      
 on 2 Sep 2020
				I am glad to be of help!
Try this
w0 = 1 ;
w1 = 0.5 ;
N = 5 ;
ww = linspace(w1,w0,N) ;
W = [fliplr(ww) ww] ;
ar=0.866; % Aspect ratio for equilateral triangle
h=ar*W;%height of triangle
n = 200; % number of triangles
area = 20; % 10x10 square for all the triangles
triangle_locations = area*rand(n, 2); % location of triangles
fig = figure();
ax = axes();
set(ax,'Color','k','xticklabel',[],'yticklabel',[])
ax.XLim = [0 area];
ax.YLim = [0 area];
p = gobjects(1, n);
for i=1:n
    p(i) = patch([0 0 0], [0 0 0], 'w');
end
for i = 1:length(W)
    for k = 1:n
        x = [0 W(i) W(i)/2] + triangle_locations(k, 1);%x coordinates of vertices
        y = [0 0 h(i)] + triangle_locations(k, 2);%y coordinates of vertices
        p(k).Vertices = [x.' y.'];
    end
    pause(0.1)
end
More Answers (0)
See Also
Categories
				Find more on Animation in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



