2017-05-11 2 views
5

Ich habe zufällig einige Punkte auf einem JavaScript-Canvas generiert Ich habe mich gefragt, was die effizienteste Methode wäre, Dreiecke zu zeichnen, die die Punkte in einer einheitlichen Art und Weise verbinden. Das Ziel besteht darin, dass die Dreiecke die gesamte Leinwand ausfüllen, ohne sich zu überlappen.Erzeugen von Dreiecken aus einer zufälligen Menge von Punkten


Für eine visuelle Darstellung, hier ist ein Bild der Punkte, die ich zufällig über eine Leinwand generiert habe. Wie Sie sehen können, muss ich möglicherweise die Art ändern, in der ich die Punkte zufällig auf die Leinwand lege.

points

Und so möchte ich die Dreiecke zeichnen.

enter image description here

+0

Betrachten [Delaunay Triangulation] (https://en.wikipedia.org/ wiki/Delaunay_triangulation) – Phrogz

+0

Es gibt eine JavaScript-Bibliothek dafür (wie immer haha): https://github.com/ironwallaby/delaunay –

+0

Danke @Phrogz, das sollte genug sein, um mich in die richtige Richtung zu bringen. – getmicah

Antwort

1

Dank & @GabeRogan für den Hinweis mich in die richtige Richtung @Phorgz. Delaunay Triangulation war definitiv der Weg zu gehen und es endete sehr schnell, auch wenn die Leinwand als Animation aktualisiert wurde.

Ich habe am Ende mit dem npm-Paket faster-delaunay, die den Divide and Conquer-Algorithmus verwendet, um die zufällig erzeugten Punkte zu triangulieren. Hier

ist ein Ergebnis dessen, was ich auf der Leinwand gezogen haben, die Updates wie die Punkte um die Ebene bewegen:

delaunay

Verwandte Themen