В своей работе я столкнулся с задачей, в которой мне нужно создать треугольную сетку внутри нескольких разных полигонов с помощью Python. Хотя многоугольники представляют собой сегменты выпуклой оболочки, каждый сегмент сам по себе имеет вогнутую форму. Когда я попытался использовать scipy.spatial.Delaunay(), оказалось, что алгоритм предполагает, что многоугольник выпуклый, и в конечном итоге генерирует треугольники за пределами вогнутой области корпуса. Ниже приведены коды и результирующий график.
for i in range(len(mp)):
dtri = np.array(mp[i])
plt.scatter(dtri[:,0],dtri[:,1])
plt.plot(np.array(fdc_seg[i])[:,0],np.array(fdc_seg[i])[:,1])
tri = Delaunay(dtri,qhull_options="QJ")
triang = mtri.Triangulation(dtri[:, 0],dtri[:, 1],triangles=tri.simplices)
plt.triplot(dtri[:, 0], dtri[:, 1], tri.simplices,lw=0.5, color='red')
plt.show()