1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| % Données aléatoire
n=25;
x = rand(n,1);
y = rand(n,1);
u = rand(n,1);
v = rand(n,1);
% Ouverture de l'objet Figure
figure
% Choix d'une palette de couleur
cmap=jet(64);
colormap(cmap);
% Tracé du graphique Quiver standard
subplot(1,2,1)
quiver(x,y,u,v)
axis equal
% Mise à la même longueur de toutes les vecteurs par normalization
% Le facteur f sert à adapter la longueur à l'affichage L = f * 1
f=.2;
nrm=sqrt(u.^2+v.^2);
u=f*u./nrm;
v=f*v./nrm;
% Création des objets de type Patch (méthode Vertices & Faces)
% fv.vertices : matrice des coordonnées des sommets des vecteurs
% [X(1er sommet 1er vecteur) Y(1er sommet 1er vecteur)]
% [X(2nd sommet 1er vecteur) Y(2nd sommet 1er vecteur)]
% [X(1er sommet 2nd vecteur) Y(1er sommet 2nd vecteur)]
% [X(2nd sommet 2nd vecteur) Y(2nd sommet 2nd vecteur)]
% [X(1er sommet 3ème vecteur) Y(1er sommet 3ème vecteur)]
% [X(2nd sommet 3ème vecteur) Y(2nd sommet 3ème vecteur)]
% ...
% fv.faces : matrice de connection des sommets pour former les Patch
% [1 3 5 7 9 11 13 ...]
% [2 4 6 8 10 12 14 ...]
x=[x(:) x(:)+u(:)].';
y=[y(:) y(:)+v(:)].';
fv.vertices=[x(:) y(:)];
fv.faces=[1:2:numel(x) ; 2:2:numel(x)].';
% fv.facevertexcdata : matrice des couleurs associées à chaque sommet
% Ici on utilise les couleurs Indexed. La couleur est un indice qui se
% réfère à la palette de couleur créée au début du code
% On passe de nrm [nrm_mini nrm_maxi] à idx [1 size(cmap,1)]
idx=[1+round((nrm(:)-min(nrm(:)))./max((nrm(:)-min(nrm(:)))).*(size(cmap,1)-1)) 1+round((nrm(:)-min(nrm(:)))./max((nrm(:)-min(nrm(:)))).*(size(cmap,1)-1))].';
fv.facevertexcdata=idx(:);
% Ici c'est la couleur des arêtes qui nous importe
fv.edgecolor='interp';
% Tracé du graphique avec les Patch
subplot(1,2,2)
patch(fv)
axis equal |
Partager