Bonjour,
Avez-vous une idée comment on peut créer une forme de nid d’abeille.
En effet, l’objectif consiste à diviser une surface (rectangulaire) à des zones selon la forme nid d’abeille comme présenté sur la figure en pièce jointe.
Merci d’avance.
Bonjour,
Avez-vous une idée comment on peut créer une forme de nid d’abeille.
En effet, l’objectif consiste à diviser une surface (rectangulaire) à des zones selon la forme nid d’abeille comme présenté sur la figure en pièce jointe.
Merci d’avance.
La question manque de précision. qu'entends-tu par "forme" ? Une image, un maillage géométrique ou autres ?
Merci pour votre réponse
oui c'est un un maillage géométrique (grid) en identifiant les points de chaque maille et le centre.
Bonjour,
Il y a plusieurs solutions (patch,voronoi...)
Voici un exemple "à la main" avec deux boucles :
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 clear cote=1; pY=sqrt(3)/2; pX=1.5; X=[0.5 1.5 2 1.5 0.5 0]; Y=[0 0 cote*pY 2*cote*pY cote*2*pY pY]; figure hold on grid axis equal pasy=0; for nl=1:10 % Nombre de colonnes pasx=0; for nc=1:5 % 2 fois nombre de ligne patch(cote*(X+pasx*pX),Y+pasy,'w','LineWidth',5) patch(cote*X+(pasx+1)*pX,Y+pY+pasy,'w','LineWidth',5) pasx=pasx+2; end pasy=pasy+2*pY; end
Tu peux également t'inspirer de la contribution que j'avais posté ici : Image with non-square pixels
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 X = rand(5,8); h = imageWithNonSqrPix(X,'hex',2); set(h, 'FaceColor', 'None', 'Edgecolor', 'k', 'LineWidth', 2)
Merci à vous,
@ phryte : dans ton code j'ai pas compris comment on peut identifier le centre de chaque maille.
Quelques corrections (longueur du côté) et coordonnées du centre :
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
22
23
24
25
26
27 clear cote=1; pY=sqrt(3)/2; pX=cote*1.5; X=cote*[0.5 1.5 2 1.5 0.5 0]; Y=cote*[0 0 pY 2*pY 2*pY pY]; figure hold on grid axis equal pasy=0; for nl=1:10 % Nombre de colonnes pasx=0; for nc=1:2 % 2 fois nombre de ligne patch(X+pasx*pX,Y+cote*pasy,'w','LineWidth',5) patch(X+(pasx+1)*pX,Y+cote*(pY+pasy),'w','LineWidth',5) cdgx(nl,nc)=X(1)+cote/2+pasx*pX; cdgy(nl,nc)=Y(1)+cote*(pY+pasy); plot(X(1)+cote/2+pasx*pX,Y(1)+cote*(pY+pasy),'.r','MarkerSize',20) plot(X(3)+cote/2+pasx*pX,Y(3)+cote*(pY+pasy),'.r','MarkerSize',20) pasx=pasx+2; end pasy=pasy+2*pY; end cdgx cdgy
Partager