De retour de la surface du triangle de la 3D scipy.spatiales.Delaunay
J'ai ce problème. J'essaie de combiner les points de cloud par scipy.spatiales.Delaunay. J'ai utilisé:
tri = Delaunay(points) # points: np.array() of 3d points
indices = tri.simplices
vertices = points[indices]
Mais, ce code de retour du tétraèdre. Comment est-il possible de retourner le triangle de la surface uniquement?
Grâce
OriginalL'auteur s.t.e.a.l.t.h | 2014-10-17
Vous devez vous connecter pour publier un commentaire.
Pour qu'il fonctionne que sous forme de code, vous devez paramétrer la surface 2D. Par exemple, dans le cas de la boule (r,theta, psi), le rayon est constant (drop out) et les points sont donnés par (theta,psi) qui est en 2D.
Scipy Delaunay est à N dimensions de la triangulation, donc si vous donnez des points 3D il renvoie les objets 3D. Donner 2D des points et il renvoie à des objets 2D.
Ci-dessous est un script que j'ai utilisé pour créer des polyèdres pour openSCAD. U et V sont mes paramétrisation (x et y) et ce sont les coordonnées que je donne à Delaunay. Notez que la "triangulation de Delaunay" propriétés s'appliquent uniquement dans u,v de coordonnées (les angles sont maximisés dans l'espace uv pas xyz -espace, etc).
L'exemple est une copie modifiée de http://matplotlib.org/1.3.1/mpl_toolkits/mplot3d/tutorial.html qui, à l'origine utilise Triangulation fonction (cartes à Delaunay finalement?)
Ci-dessous le (un peu plus structuré) texte de sortie:
Cette question se rapporte à la façon de créer une surface 2D en 3D. C'est un problème commun (ou fonction) dans la création de maillages. Il n'y a aucun moyen que vous pouvez mapper une surface 2D à la 3D sans objet la création d'une sorte de point ou des points ou de lignes. Par exemple, pensez à la façon terres de latitude et de longitude sont définis. Ils sont parfaitement 2d en équateur et complètement les écrous dans les pôles. Latitude = 90 degrés définit le pôle nord et au pôle nord, vous pouvez aller de longitude 15 de longitude 67 ou à la longitude 87 en douceur et en continu. Le point est qu'il n'y a pas moyen de faire ce que vous demandez.
Je voudrais diviser le problème en deux (ou plus) parties et créer deux surfaces. Sinon, il pourrait être possible de créer en 3D de triangulation et d'obtenir les surfaces extérieures des triangles. Si vous trouvez une bonne façon de le faire, faites le moi savoir. C'est un très commun de problème pratique.
Mon point est le résultat de construit sur mesure scanner 3d. J'ai réalisé que j'ai des groupes de points communs z de la valeur que je pourrais connecter ensemble. Ensuite, je peux probablement juste de trianguler entre chaque paire de lignes parallèles
OriginalL'auteur Juha
Il semble que vous voulez calculer le l'enveloppe convexe de votre nuage de points. Je pense que c'est ce que vous voulez faire:
Vous ne serez pas en mesure d'utiliser le
scipy.spatial
fonctions à faire ce que vous demandez, puisque c'est basé sur qhull qui "ne prend pas en charge la triangulation de non-surfaces convexes...". Vous pourriez peut-être briser vos points en plusieurs surfaces convexes.Oui, merci, j'ai résolu ce problème en CGAL poisson de reconstruction.
OriginalL'auteur Jaime
Suivantes Jaime réponse, mais d'élaborer un peu plus avec un exemple:
Qui devrait représenter la figure suivante:
OriginalL'auteur gmagno