2011-06-20 7 views
0

Étant donné un ensemble de points (c'est-à-dire un ensemble de sommets 3XN), comment puis-je le trianguler en utilisant matlab? En supposant que le jeu de points représente une certaine surface d'un objet et qu'il ne contient aucun bruit.matlab: ensemble de points triangulaires


EDIT: La réponse choisie donne un moyen de créer les tétraèdres d'un maillage. Je cherchais la triangulation; Pour mon cas spécifique d'une forme convexe, la coque convexe (en utilisant convhulln comme suggéré dans les commentaires de la réponse) était suffisante.

+0

double possible triangulaire de [Tracer une surface à partir d'un ensemble de l'intérieur des points de dispersion 3D dans MATLAB] (http: // stackoverflow .com/questions/5492806/tracer-une-surface-d'-un-ensemble-de-3d-scatter-points-en-intérieur-dans-matlab) – gnovice

Répondre

1

Pour créer une triangulation de Delaunay, vous pouvez utiliser la classe DELAUNAYTRI:

Vous créez un objet de triangulation en appelant

DT = DelaunayTri(coordinates); 

coordinates est un tableau N par 3 (ou 2) coordonnées du vertex.

Pour accéder à la triangulation, appelez

tri = DT.triangulation; 

Pour tracer, appeler par exemple

patch('Vertices',DT.X,'Faces',DT.triangulation) 
+0

'??? Fonction indéfinie ou variable 'DelaunayTri'.' - Je suppose que cela ne fonctionne que pour les versions de matlab> 2008 (qui est le mien) - J'ai voté ceci, mais y a-t-il un morceau de code explicite qui puisse fonctionner en 2008? – olamundo

+0

@noam: Au moins votre version doit inclure 'delanauy' (http://www.mathworks.com/help/techdoc/ref/delaunay.html) qui fournit des fonctionnalités similaires. Merci – eat

+0

@eat - delaunay triangule en 2D, c'est-à-dire qu'il obtient [X Y] coordonnées, pas [X Y Z]. il y a aussi delaunay3, mais cela produit une décomposition tétraédrique, plutôt qu'une triagnisation (elle suppose que le maillage a du volume et pas seulement une surface). Veuillez me corriger si vous pensez que je me trompe – olamundo

Questions connexes