Bonjour,
J'aimerais obtenir un tore en 3D avec matlab, mais au lieu d'avoir un réseau de rectangles j'aimerais avoir des hexagones. Comment faire?
Merci d'avance pour votre aide!
Version imprimable
Bonjour,
J'aimerais obtenir un tore en 3D avec matlab, mais au lieu d'avoir un réseau de rectangles j'aimerais avoir des hexagones. Comment faire?
Merci d'avance pour votre aide!
Salut!
La mémoire d'un ordinateur contient des données numériques et non des objets géométrique. Si tu veux obtenir un objet 3D, il faudrait qu'un périphérique de ton ordinateur soit une machine-outil, comme un tour ou une fraiseuse, ce qui n'est pas très courant.Citation:
J'aimerais obtenir un tore en 3D avec matlab
Jean-Marc Blanc
salut,
un truc que tu peux essayer, c'est partir d'un maillage rectangulaire, choisir des sommets de ce maillage qui correspondent a des hexagones, et créer les faces correspondantes.
Par contre attention : tes faces hexagonales auront des sommets qui ne seront pas coplanaires.
De plus, je suis pas sur que Matlab affiche facilement des maillages avec des faces hexagonales.
A+
Oui j'avais pensé a ca, mais comment je fais pour choisir les sommets et créer les faces correspondantes??
Merci pour ta réponse!
Salut!
Comme je l'ai sous-entendu dans mon précédent message, ton problème, tel que tu l'as formulé, est absurde. Alors, j'essaie de le reformuler correctement:
Il reste un point à éclaircir: veut-on localiser les noeuds dans un système de coordonnées cartésiennes, cylindriques ou toriques (pour plus de détails, voir dans l'ouvrage d'André Angot: "Compléments de mathématiques à l'usage des ingénieurs de l'électrotechnique et des télécommunications"?Citation:
Soit un tore de dimensions données; on veut le recouvrir d'une grille à mailles hexagonales. Créer un tableau (ou un fichier) contenant les coordonnées des noeuds de cette grille.
Jean-Marc Blanc
Salut,
voila déjà un bout de code pour représenter un tore sous Matlab
Au final, tu obtiens 3 tableaux x2, y2 et z2, qui contiennent les coordonnées (cartésiennes) des sommets du maillage polygonal représentant la surface de ton tore.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 r1 = 30; % rayon externe r2 = 10; % rayon de la section % calcule les points (en 3D) representant un petit cercle t1 = linspace(0, 2*pi, 25)'; x1 = cos(t1)*r2 + r1; y1 = zeros(size(t1)); z1 = sin(t1)*r2 + r1; % affiche le cercle figure plot3(x1, y1, z1); % fait tourner le cercle autour de l'axe Oz pour creer le tore t2 = linspace(0, 2*pi, 25); x2 = x1*cos(t2) - y1*sin(t2); y2 = x1*sin(t2) + y1*cos(t2); z2 = repmat(z1, 1, length(t2)); % affiche le tore obtenu mesh(x2, y2, z2); axis equal
Dans le cas d'un maillage carré, la relation d'adjacence entre les sommets est implicite : il s'agit des voisins orthogonaux dans chaque matrice. Pour passer à un maillage hexagonal, il vaudra mieux passer par une représentation par tableaux de sommets et de faces (voir la doc de la fonction 'patch').
A+
A Jean-Marc Blanc:
Merci, le problème est mieux formulé comme ca. J'aimerais localiser les noeuds dans un système de coordonnées cartésiennes...
A Kangourou:
Merci pour ce bout de code, j'avais déjà réussi a dessiner un tore mais mon code était un peu différent du tien... Je vais regarder plus en détails et voir ce que j'arrive a faire. Quant a la fonction patch, j'arrive a dessiner des hexagones avec mais j'ai pas réussi a les faire prendre la forme d'un tore...
Salut
Alors, tu sauras pour la prochaine fois...Citation:
le problème est mieux formulé comme ca.
Le plus simple me semble être de commencer par les localiser en coordonnées toriques, puis de convertir en coordonnées cartésiennes en utilisant les formules données par Angot.Citation:
J'aimerais localiser les noeuds dans un système de coordonnées cartésiennes...
Jean-Marc Blanc