Czy jest jakaś metoda uzyskania triangulacji w 2D, która jest bardziej uporządkowana, jak produkuje Matlab Delaunay? Oto przykład triangulacji 2D Delaunaya firmy Matlab.Tworzenie regularnej siatki Delaunay za pomocą scipy
Stosując ten kod:
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")
uzyskać triangulacji poniżej:
zauważyć jak ukośne łuki w Matlab rezultacie wszystkie mają to samo nachylenie; ale te w wyniku scipy są różne. Ponieważ Matlab i Scipy używają wewnętrznie QHull, zakładam, że istnieje jakaś metoda naśladowania wyniku Matlaba.
Oczywiście oba triangulacje są „poprawne”, ponieważ oba rodzaje przekątnej mają taką samą długość. Możesz spojrzeć na parametr 'qhull_options =' na 'Delaunay', który pobiera ciąg opcji, które są przekazywane do' qdelaunay'. Różne możliwe opcje są podsumowane [tutaj] (http://www.qhull.org/html/qh-optq.htm), chociaż nic oczywistego nie wystaje. Niestety, nie można zobaczyć, jak działa funkcja 'delaunay' MATLAB, ponieważ jest ona zamknięta. –
Tak, obie są poprawne, ale ponieważ jest to domena jednorodna, triangulacja matlab pozwala na pewne uproszczenia w matematyce. Dzięki za ten link, nie znalazłem tego podczas wyszukiwania wcześniej. –
Czy to zadziałałoby dla twojego problemu, aby samodzielnie wygenerować triangulację? Powinno to być rozsądne dla jednolitej domeny prostokątnej. –