Gibt es eine Methode, um eine Triangulation in 2D zu erhalten, die mehr geordnet ist, wie Matlab Delaunay erzeugt? Hier ist ein Beispiel für die 2D-Delaunay-Triangulation von Matlab.Regelmäßiges Delaunay-Gitter mit scipy erstellen
Mit diesem Code:
xPoints = np.arange(0,11,1)
yPoints = np.arange(0,11,1)
gridPoints = np.array([[x,y] for y in yPoints for x in xPoints])
tri = Delaunay(gridPoints)
plt.triplot(gridPoints[:,0],gridPoints[:,1],tri.simplices.copy())
plt.plot(gridPoints[:,0],gridPoints[:,1],'bo')
plt.title("Triangulation Visualization")
Ich erhalte die Triangulation unter:
Beachten Sie, wie diagonal Bögen in der Matlab führen alle die gleiche Neigung haben; aber diejenigen in der scipy Ergebnis sind unterschiedlich. Da Matlab und Scipy beide intern QHull verwenden, nehme ich an, dass es eine Methode gibt, das Matlab-Ergebnis nachzuahmen.
Offensichtlich beide Triangulation "richtig" sind, da beide Arten von Diagonalen die gleiche Länge haben. Vielleicht möchten Sie den Parameter 'qhull_options =' für 'Delaunay' betrachten, der eine Reihe von Optionen enthält, die an' qdelaunay' übergeben werden. Die verschiedenen möglichen Optionen sind [hier] (http://www.qhull.org/html/qh-optq.htm) zusammengefasst, obwohl nichts offensichtlich hervorsteht. Leider ist es nicht möglich zu sehen, wie MATLABs 'Delaunay'-Funktion funktioniert, da sie Closed-Source ist. –
Ja, beide sind korrekt, aber da dies eine einheitliche Domäne ist, erlaubt die Matlab-Triangulation einige Vereinfachungen in der Mathematik. Danke für diesen Link, den habe ich bei der Suche nicht gefunden. –
Würde es für Ihr Problem funktionieren, die Triangulation explizit zu generieren? Dies sollte für eine einheitliche rechteckige Domäne sinnvoll sein. –