使用Delaunay方法创建三角形网格

时间:2015-07-08 11:01:29

标签: python numpy scipy triangulation delaunay

我正在尝试使用python创建一个三角形网格。 我知道边界点,我认为delaunay方法更合适。 我试过用scipy。代码非常简单

from scipy.spatial import Delaunay
pixelpoints = np.transpose(np.nonzero(binaryImage))
tri = Delaunay(pixelpoints)
import matplotlib.pyplot as plt
plt.triplot(pixelpoints[:,0], pixelpoints[:,1], tri.simplices.copy())
plt.plot(pixelpoints[:,0], pixelpoints[:,1], 'o')
plt.show()

Output triangulation 但我不想要这个。我想在图像边界内进行网格划分。另外,我不想在洞内进行网格划分。 我可以控制覆盖表面的三角形数量吗? 有没有其他方法可以做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用Polygon.IsPointInside(tCentroid)轻松删除其他三角形,其中tCentroid是三角形质心。 IsPointInside()可以通过以下方式导出:http://geomalgorithms.com/a03-_inclusion.html

答案 1 :(得分:0)

Triangle程序满足了这两个需求:将三角形精修到指定的大小,并删除多边形外部或孔中的三角形。似乎有python interface浮动:API描述了如何指定孔和最大三角形面积。