2009-10-01 12 views
0

Je dispose d'un fichier a.txt qui ressemble à:Comment tracer des triangles sur une grille 6x6 dans MATLAB?

0 0 0 3 4 3 
0 0 3 0 3 4 
0 1 0 4 4 4 
0 1 3 1 3 5 
0 2 0 5 4 5 
0 3 0 0 4 0 

Ce sont des sommets de triangles [x1 y1 x2 y2 x3 Y3] que je dois tracer sur une grille de 6x6. J'ai besoin de voir ces triangles sur un seul graphique.

Comment cela peut-il être fait dans MATLAB?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ merci beaucoup tout le monde!

finalement ce qui a fonctionné:

a = dlmread('a.txt'); 

clf 
xlim([0 6]) 
ylim([0 6]) 
for i = 1:size(a,1) 

    line(a(i,[1:2:5,1]), a(i,[2:2:6,2]), 'color',rand(1,3)) 
    pause; 

end 
grid on; 
+0

je suis toujours la recherche. ne peut pas trouver de fonction triangle dans matlab ... aussi un problème est que le graphique est automatiquement tronqué près des valeurs les plus élevées, comment l'obtenir fixé à 6x6? – Lazer

+1

Le réglage automatique des limites mérite vraiment sa propre question. Il est préférable de garder ces questions concentrées. (en utilisant XLIM et YLIM aidera cependant!) – MatlabDoug

Répondre

6
a = dlmread('a.txt') 
clf 

for i = 1:size(a,1) 
    line(a(i,[1:2:5,1]), a(i,[2:2:6,2]), 'color',rand(1,3)) 
end 

Notez que je répète la Vertice pour compléter le triangle et j'utilise une couleur au hasard à chaque fois dans la boucle. Comme le format est facile, je peux utiliser DLMREAD avec les valeurs par défaut.

+0

merci @ MatlabDoug, comment puis-je faire une pause pour une pression sur une touche après l'ajout d'un triangle à l'image? – Lazer

+1

Vous pouvez utiliser la pause. – Jacob

+0

add ** pause ** commande après ligne() – Amro

2

Vous pouvez utiliser la fonction PATCH pour ce faire, bien que beaucoup des triangles que vous avez spécifiés poser sur le dessus les uns des autres:

a = [0 0 0 3 4 3; ... % A variable "a" containing the data from the file 
    0 0 3 0 3 4; ... 
    0 1 0 4 4 4; ... 
    0 1 3 1 3 5; ... 
    0 2 0 5 4 5; ... 
    0 3 0 0 4 0]; 
x = a(:,[1 3 5])'; % Get the x coordinates, one set per column 
y = a(:,[2 4 6])'; % Get the y coordinates, one set per column 
patch(x,y,'r');  % Use patch to plot one triangle per column, colored red 
+0

la plupart des triangles que j'ai sont en chevauchement, donc patch() ne sera pas utile, à moins qu'il ne puisse afficher les triangles un par un, disons après une pause pour une pression sur une touche? – Lazer

+0

Peut-être ajouter la troisième dimension pourrait aider: patch (x, y, repmat (1: taille (a, 1), 3,1), 'r'); voir (3) – Amro

Questions connexes