Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Triangulation de delaunay


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Triangulation de delaunay
    Bonjour à tous. Alors je vous explique mon soucis sur matlab.


    J'ai un tableau, nommé Tab3D, de taille <22272x3 double> où un triplet (coordonées 3D) de lignes définit un triangle. Il y a un ensemble de 7424 triangles.

    J'ai donc fait des recherches sur la triangulation de delaunay sous Matlab, et je trouve ça sur le site officiel mathworks.

    http://www.mathworks.fr/fr/help/matl.../delaunay.html

    Je suis donc tombé sur cette page.

    Ce qui (je pense) me concerne est le paragraphe suivant :

    TRI = delaunay(X,Y,Z) creates a 3-D Delaunay triangulation of the points (X,Y,Z), where X, Y, and Z are column-vectors. TRI is a matrix representing the set of tetrahedra that make up the triangulation. The matrix is of size mtri-by-4, where mtri is the number of tetrahedra. Each row of TRI specifies a tetrahedron defined by indices with respect to the points.

    Example
    Plot the Delaunay triangulation of a large dataset:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     load seamount
     tri = delaunay(x,y);
     trisurf(tri,x,y,z);

    Et c'est là que je ne comprends pas. La matrice qu'ils appellent "Tri" correspond-elle à mon Tab3D ? Je ne comprends pas ce qu'est cette matrice "Tri" et ce qu'elle doit contenir. Ni comment me servir de mon Tab3D.
    Je ne vois pas non plus comment implémenter mes coordonnées stockées dans mon Tab3D dans cet algorithme.

    Voilà, merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Il faut des coordonnées de points :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x = [0 1 0.5 0.5];
    y = [0 0 1 -1];
    z = [0 0 1 -1];


    et une table de connectivité :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    tri = [1 2 3 ; 1 4 2];


    ce qui signifie que les points 1, 2 et 3, dont les coordonnées respectives sont dans les variables x et y, définissent un triangle. Idem pour les points 1, 2 et 4

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    figure
    trimesh(tri,x,y,z)
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Hum d'accord merci pour ta réponse j'y vois plus clair.

    Donc ce que tu appelles table de connectivité, c'est les indices des points définnisant chaque triangle. Mais dans mon cas j'en ai 7424. Comment savoir quels points définissent un triangle ?

  4. #4
    Rédacteur/Modérateur

    C'est la que la fonction delaunay intervient :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    tri = delaunay(Tab3D(:,1),Tab3D(:,2),Tab3D(:,3))


    Par contre, tu obtiendras des tétraèdres, pas des triangles.
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)