2017-06-08 3 views
1

Comment faire pour que ce rectangle se déplace de haut en bas à gauche en bas à droite?Mouvement du rectangle avec la fonction tot

clear all 
close all 
clc 
n=10; 
h=1; 
for t=0:n-1 
    clf; 
    axis([0 sum(1:n) 0 sum(1:n)]); 
    axis manual 
    tot = sum(0:t); 
    patch([tot tot+(t+1)*h tot+(t+1)*h tot],[tot tot tot+(t+1)*h tot+(t+1)*h],... 
     [2 6 3 7],'EdgeColor','none','FaceAlpha',(1-(t+1)*.7/n)); 
    pause(1/6) 
end 

Essayez également d'utiliser cette fonction quelque part. sum(1:t)-tot-(t+1)*h

+0

Veuillez accepter la réponse qui vous a aidé pour confirmer que le sujet est proche. – EBH

Répondre

1

Vous pouvez calculer l'emplacement Y pour la fonction de patch différemment, mais à partir de votre code actuel, le changement le plus simple sera d'inverser la direction de l'axe Y:

axis ij; % put this before patch 
1

Vous avez juste besoin de substruct vos y coordonnées de la hauteur totale sum(0:n):

patch([tot tot+(t+1)*h tot+(t+1)*h tot],... 
    sum(0:n)-[tot tot tot+(t+1)*h tot+(t+1)*h],... 
    [2 6 3 7],'EdgeColor','none','FaceAlpha',(1-(t+1)*.7/n));