我必须以与optimesh兼容的格式生成一个二维网格,以便使用该库中包含的算法对其进行细化(特别是Centroide Voronoi镶嵌平滑(。我从一组无序的点开始,所以我试图理解哪一个是最容易完成这项工作的工具链。我对几何处理一点也不熟悉,所以如果我的问题很愚蠢,请原谅我。
我找到了很多库来处理各种格式的文件中的网格,但我不知道如何从点生成网格。我已经看到,使用scipy,我可以获得三角测量,但从scipy返回的对象不能直接输入到optimesh。
所以,我现在的问题基本上是这样的:
import numpy as np
from scipy.spatial import Delaunay,delaunay_plot_2d
points = np.random.random((100,2))
delaun = Delaunay(points)
#Magic code that I wish
delaun.to_meshfile('meshfile.xxx')
#
使用一种文件格式,我可以稍后用optimesh处理
optimesh作者。您的delaun
对象具有delaun.points
和delaun.simplices
。这些可以输入optimesh:
import numpy as np
from scipy.spatial import Delaunay, delaunay_plot_2d
import optimesh
points = np.random.random((100, 2))
delaun = Delaunay(points)
points, cells = optimesh.cvt.quasi_newton_uniform_blocks(
delaun.points, delaun.simplices, tol=1.0e-5, max_num_steps=100
)
如果您真的想将它们存储在一个文件中,请查看meshio。