Bonne question. D'abord, la solution est de prendre la bibliothèque qui peut vous donner le résultat dans le format désiré. Vous avez besoin de triangulation de Delaunay pas de diagramme de Delaunay, ce que cette bibliothèque fournit.
Il est possible d'obtenir des triangles à partir de la bibliothèque de résultats fournir assez simple. Si le point du diagramme interne a n
bords (méthode getLinked()), il fait partie des triangles n
. Les autres arêtes des triangles sont calculées par en triant les arêtes par angle. Si le point est extérieur (sur la coque convexe) que l'angle entre une paire d'arêtes est plus grand que 180deg et sur cette paire, le triangle n'existe pas.
algorithme est comme:
for each point p1:
neighbours = delaunay.getLinked(p1)
sort neighbours by angle to point p1
for i=0 to size(neighbours)
p2 = neighbours[i]
p3 = neighbours[(i+1) % size(neighbours)]
if (angle(p3, p1) - angle(p2, p1)) % 360deg > 180deg:
continue # Outer triangle
if p2 > p1 and p3 > p1:
continue # Already processed
print result triangle (p1, p2, p3)
Check (p2, p3> p1) est de supprimer trinagles identiques, puisque chaque triangle est produit trois fois.
Avez-vous essayé de faire des recherches sur Google pour "convertir un ensemble de lignes en triangles" pour trouver des algorithmes qui pourraient vous aider? Qu'est-il arrivé quand vous les avez essayé? –
Je ne trouve rien qui ne prenne pas pour toujours ... –
Je voudrais peut-être une bibliothèque différente –