Visualisation 3d sur matlab

Résolu/Fermé
BELDITOWN - 1 févr. 2009 à 22:08
 elhberg - 12 nov. 2009 à 23:46
Bonjour,
comment on peut visualiser un triangle dans l'espace 3D sur Matlab
tel que:
le triangle admet 3 sommets
A( x1,y1,z1)
B(x2,y2,z2)
C(x3,y3,z3)

donnes:
X=[x1,x2,x3]
Y=[y1,y2,y3]
X=[z1,z2,z3]

merci
A voir également:

5 réponses

Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 375
3 févr. 2009 à 14:21
Bonjour à tous les deux encore ;-)

Effectivement, il n'y a pas de souci pour donner des matrices à Matlab pour le plot3.
En reprenant ce qu'a écrit BELTIDOWN :
s1 liée à s5
s1 liée à s4
s1 liée à s3
s3 liée à s5
s3 liée à s2
s5 liée à s2

Cela donnerait quelque chose du genre :
P = [s1;s5;s1;s4;s1;s3;s3;s5;s3;s2;s5;s2];
plot3(reshape(P(:,1),[2 6]),reshape(P(:,2),[2 6]),reshape(P(:,3),[2 6]));
Il n'en est pas question dans le message 4, mais s'il s'agit de tracer tous les segments possibles reliant les 5 points, ils ne sont pas tous tracés ici (il y en a 10 normalement). De plus, si c'est effectivement le but recherché, pour un nombre de points un peu plus important, cela risque d'être quelque peu laborieux à taper. Dans ce cas, ce ne serait pas mal d'utiliser la fonction nchoosek de Matlab pour avoir toutes les combinaisons possibles de 2 points.
Quelque chose du genre devait convenir :
%% Supposons qu'il y ait 10 points
n = 10;
%% Juste pour l'exemple, on choisit 10 points au hasard
s = rand(n,3);
s1=s(1,:);s2=s(2,:);s3=s(3,:);s4=s(4,:);s5=s(5,:);s6=s(6,:);s7=s(7,:);s8=s(8,:);s9=s(9,:);s10=s(10,:);
%% Toutes les combinaisons possibles de 2 entiers choisis parmi
%% 1,2,3,4,5,6,7,8,9,10
C = nchoosek((1:n),2).';
nc = nchoosek(n,2);
%% On construit la chaîne de caractères à évaluer
%% pour la passer en argument à plot3
C = strtrim(cellstr([num2str(reshape(C,[2*nc 1])) repmat(';',[2*nc 1])]));
P = strvcat(strcat(cellstr(repmat('s',[2*nc 1])),C)).';
P = reshape(P,1,numel(P));
P = ['[' P(1:end-1) '];'];
%% On évalue P
P = eval(P);
%% On trace
plot3(reshape(P(:,1),[2 nc]),reshape(P(:,2),[2 nc]),reshape(P(:,3),[2 nc]));
Bonne journée
4
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
2 févr. 2009 à 08:57
plot3(X,Y,Z)
met X=[x1,x2,x3,x1] si tu veux fermé le triangle (pareil pour Y et Z)
0
bonjour
merci
mais comment visualisé les arrétes pour liée les sommets.
à bien tot
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
2 févr. 2009 à 13:57
help plot3 !
plot3(x,y,z,'-')
0
merci
mais désolé je croix que tu n'a pas bien compris ma problématique
supposons que j'ai 5 sommets [ s1,s2,s3,s4,s5]
s1=[x1,y1,z1]
s2=[x2,y2,z2]
s3=[x3,y3,z3]
s4=[x4,y4,z4]
s5=[x5,y5,z5]

les liaisons ou les arrêtes entre les sommets sont:
s1 liée à s5
s1 liée à s4
s1 liée à s3
s3 liée à s5
s3 liée à s2
s5 liée à s2
danc comment on peut faire figuré ou visualisé touts les sommets et les arrêts ( visualisation des arrêts = visualisation d'un graphes ou une squelette 3D)
merci une autre fois cher monsieur
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
3 févr. 2009 à 08:42
Ce n'est pas que je n'ai pas bien compris, c'est que tu t'es très mal expliqué.
Tu parles d'un triangle, donc trois arrêtes, et là pas de souci.
Si tu as plus de sommets, c'est plus compliqué, à ma connaissance il n'y a pas de fonction pour le faire directement.
Je pense qu'il faut alors se taper l'algorithme pour tracer toutes les arrêtes.
toujours avec plot3, tu lui donne chaque arrete à tracer. Peut être qu'en lui fournissant 3 matrices il comprendra, regarde l'aide (help plot3)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour.
moi je veux dessiner les srfaces de bezier sur matlab mais je sais pas comment faires.
-1