Bonjour à tous.
Je cherche à récupérer un ensemble de coordonnées correspondant à l'intersection de deux cylindres (et qui devraient correspondre à un "cercle")
Pour tracer les deux cylindres, je fais :
Etant donné que les deux cylindres sont l'uns dans l'autre, il y a forcément des coordonnées identiques...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 %Variables r=1; theta=(0:pi/30:2*pi); h=(0:1/30:2); [h,theta]=meshgrid(h,theta); %Premier cylindre x_cylinder=r*cos(theta); y_cylinder=r*sin(theta); z_cylinder = h; %Deuxième cylindre x_cylinder_2=(r/5)*cos(theta)+1; y_cylinder_2=(r/5)*sin(theta); z_cylinder_2=h+0.9; %Affichage mesh(x_cylinder,y_cylinder,z_cylinder,'FaceColor',[0.3,0.5,0.3],'EdgeColor','black'); hold on; mesh(z_cylinder_2,y_cylinder_2,x_cylinder_2,'FaceColor','red','EdgeColor','black');
Pour avoir les coordonnées utilisées par la fonction mesh, j'ai écris :
Où 3721 correspond à la taille de h * la taille de theta.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 A=[x_cylinder y_cylinder z_cylinder]; A=reshape(A,3721,3); B=[x_cylinder_2 y_cylinder_2 z_cylinder_2]; B=reshape(B,3721,3);
Je me retrouve donc avec deux matrices A et B de 3 colonnes chacune qui correspondent respectivement aux coordonnées x, y et z de chaque cylindres.(J'ai bien vérifier que les coordonnées obtenus étaient sur le cylindre correspondant en traçant quelques points au hasard)
Ensuite je compare les colonnes pour trouver les coordonnées identiques de cette façon :
x_circle est censé est un vecteur contenant les coordonées en x.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 a=1; x_circle=[] for i=1:1:3721 for j=1:1:3721 if A(i,1)==B(j,3) x_circle(a)=B(j,3); a=a+1; end end end
Vu que pour tracer le 2eme cylindre j'ai pris z_cylinder_2 en coordonnée en x, je compare bien les coordonnées en x des deux cylindres (ce qui correspond bien à la colonne 1 de la matrice A et à la colonne 3 de la matrice B. Dans tous les cas j'ai fais toutes les possibilités)
Je n'obtient aucun résultat, il ne retourne que des 1, surement car il y en a quelques un dans les coordonnées, mais rien d'autre.
Je me demande donc si c'est dans ma démarche qu'il y a un problème...j'ai du manquer un truc tout bête, c'est pourquoi je fais appel à vous
Merci de votre aide.
Partager