Есть ли какой-нибудь способ получить триангуляцию в 2D, которая более упорядочена, как это делает Matlab Delaunay? Вот пример двумерной триангуляции Делоне в Matlab.
Используя этот код:
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")
Я получаю триангуляцию ниже:
Обратите внимание, что все диагональные дуги в Matlab имеют одинаковый наклон; но те, что в результате scipy, различаются. Поскольку Matlab и Scipy используют QHull внутри, я предполагаю, что есть какой-то способ имитировать результат Matlab.
qhull_options=
дляDelaunay
, который принимает строку параметров, которые передаются вqdelaunay
. Различные возможные варианты суммированы здесь, хотя ничего очевидного не выделяется. К сожалению, невозможно увидеть, как работает функция MATLABdelaunay
, поскольку она имеет закрытый исходный код. - person ali_m   schedule 27.04.2015'Qt','Qbb','Qc'
, однако, когда я использую их сscipy
, я не получаю желаемого результата. Пробовал разные комбинации - безрезультатно. Интересно, что на этой связанной странице триангуляция однородной сетки с использованием Matlab Delaunay (пример 2) не показывает искомую регулярность. Интересно, ваш конкретный пример Matlab (т.е. единичный квадрат с интервалом 0,25) произвел это по счастливой случайности? К сожалению, у меня больше нет Matlab с лицензией для тестирования. - person J Richard Snape   schedule 21.05.2015qdelaunay
на линейно преобразованном наборе входных точек. Добавление небольшого количества перекоса, например.x = x + eps * y
должно быть достаточно. - person bfroehle   schedule 31.05.2015