2017-07-20 4 views
1

de configuration

Étant donné un certain ensemble de noeuds à l'intérieur d'une coque convexe, supposons que le nom de domaine contient une ou plusieurs zones concaves:Trianguler un ensemble de points avec un domaine concave

point distribution with concave areas

où des points bleus sont points, et la ligne noire illustre le domaine. Supposons que les points sont conservés sous la forme d'un tableau 2D points de longueur n, où n est le nombre de paires de points.

Laissez-nous triangule alors les points, en utilisant quelque chose comme la méthode de Delaunay scipy.spatial:

triangulation within domain

Comme vous pouvez le voir, on peut expérimenter la création de triangles qui traversent le domaine.

Question

Qu'est-ce qu'une bonne approche algorithmique de supprimer des triangles qui s'étendent en dehors du domaine? Idéalement mais pas nécessairement, là où les bords simplex conservent toujours la forme du domaine (c'est-à-dire, pas de trous majeurs où les triangles sont supprimés).

+1

Ce n'est pas vraiment une question de python – Mauricio

+1

Essayez les algorithmes du paquet 'polygon' dans BOOST. – Prune

+0

Avez-vous accès au domaine, ou devez-vous savoir de quoi il s'agit? – Mauricio

Répondre

1

L'un des algorithmes classiques DT génère un premier triangle de délimitation, puis ajoute tous les nouveaux triangles triés par x, puis les pruneaux sur tous les triangles ayant un sommet dans le supertriangle.

Au moins à partir de l'image fournie, on peut déduire les heuristiques de l'élagage sur certains triangles ayant tous les sommets sur la coque concave. Sans preuve, les triangles à élaguer ont une zone négative lorsque leurs sommets sont triés dans le même ordre que la coque concave est définie.

Il peut être nécessaire d'insérer également la coque concave et de la tailler.

0

Calculer le centroïde des triangles et vérifier s'il se trouve à l'intérieur du polygone en utilisant this algorithm.

+0

Pas sûr que cela fonctionnerait; Considérons un "bit pointu" sur le polygone qui pourrait contenir le centroïde, mais pas le reste du triangle – meowgoesthedog

+0

Le DT final ne contient pas un tel triangle, même si la tessellation intermédiaire le peut. –

0

Vous pouvez essayer un algorithme contraint delaunay par exemple avec slogan algoritm ou bibliothèque cgal.

[1] A Brute-Force Constrained Delaunay Triangulation?

+0

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [De l'examen] (/ review/low-quality-posts/18877450) –