web-dev-qa-db-fra.com

Triangulation de Delaunay efficace

Je recherche une implémentation .NET qui construit la triangulation Delaunay à partir d'un ensemble de points.

J'ai déjà testé quelques implémentations, mais elles ne fonctionnaient toutes que pour une petite quantité de points (jusqu'à 20 000).

J'ai besoin de quelque chose qui peut gérer 500 000 points dans un délai raisonnable.

36
AlonH

Si vous souhaitez construire la triangulation Delaunay 2D, utilisez Triangle.Net. Il s'agit d'un port C # direct du célèbre programme Triangle de Shewchuk.

17
Ashwin Nanjappa

Je cherchais la même chose et j'ai trouvé une bibliothèque C # 4.0 appelée MIConvexHull:

"Un algorithme de coque convexe et une bibliothèque pour les dimensions 2D, 3D et supérieures. Le code peut également être utilisé pour calculer les triangulations de Delaunay et les maillages Voronoi des données d'entrée. Les repères indiquent que le code de coque convexe et le code de triangulation à 4 dimensions et plus sont au pair ou mieux que la solution fournie par la bibliothèque C++ CGAL. ​​"

http://miconvexhull.codeplex.com/

Mise à jour sept/2016:

Cette bibliothèque a migré vers Github et il semble qu'elle soit maintenant publiée sous la licence MIT (certains des exemples sont GPL). Vous pouvez trouver la dernière version ici:

https://github.com/DesignEngrLab/MIConvexHull

La documentation est en fait dans le code source et elle est simple à utiliser. Voici le fichier source pertinent pour la triangulation de Delaunay:

https://github.com/DesignEngrLab/MIConvexHull/blob/master/MIConvexHull/Triangulation.cs

Si vous voulez voir la version originale de 2012. Jetez un œil ici:

http://miconvexhull.codeplex.com/SourceControl/changeset/view/e1b26677eb1a#MIConvexHull/Triangulation/Triangulation.cs

14
Pablo

Avez-vous essayé NetTopologySuite

1
Mohit

Il existe une implémentation C # qui pourrait vous aider à générer un diagramme de Voronoy ainsi qu'une triangulation Delaunay: http://www.codeproject.com/Articles/11275/Fortune-s-Voronoi-algorithm-implemented-in-C-C

1
BlackBada

Il existe une solution appelée G # .

Il a des triangulations de Delaunay (également avec des lignes de rupture). À partir du graphique des performances sur leur site Web, vous devriez pouvoir trianguler 500 000 points en environ 30 secondes.

1
wackmc