Python 如何使用scipy.Delaunay避免四面体位于平面上?

Python 如何使用scipy.Delaunay避免四面体位于平面上?,python,scipy,triangulation,delaunay,Python,Scipy,Triangulation,Delaunay,我试图在Python 3.7.3中创建一个四面体网格。。但有些四面体是平面的,即它们的顶点在平面上 将numpy导入为np 从scipy.spatial导入Delaunay #立方体中3x3x3等距点的坐标 x=np.linspace(0,1,3) X1,X2,X3=np.meshgrid(x,x,x) 顶点=np.hstack([X1.整形(-1,1),X2.整形(-1,1),X3.整形(-1,1)]) #使用Delaunay tri=Delaunay(顶点)。简单 #四面体 单纯形=顶点[t

我试图在Python 3.7.3中创建一个四面体网格。。但有些四面体是平面的,即它们的顶点在平面上

将numpy导入为np
从scipy.spatial导入Delaunay
#立方体中3x3x3等距点的坐标
x=np.linspace(0,1,3)
X1,X2,X3=np.meshgrid(x,x,x)
顶点=np.hstack([X1.整形(-1,1),X2.整形(-1,1),X3.整形(-1,1)])
#使用Delaunay
tri=Delaunay(顶点)。简单
#四面体
单纯形=顶点[tri,:]
正如你在下面看到的,第三个四面体的所有y坐标都是0.5。这将导致随后出现奇异矩阵

print(simplices[0:3])
[[[1.  0.5 1. ]
  [0.5 1.  0.5]
  [1.  0.5 0.5]
  [0.5 0.5 0.5]]

 [[1.  0.5 1. ]
  [1.  1.  0.5]
  [0.5 1.  0.5]
  [1.  0.5 0.5]]

 [[1.  0.5 1. ]
  [0.5 0.5 1. ]
  [1.  0.5 0.5]
  [0.5 0.5 0.5]]]

你知道我如何解决这个问题吗?非常感谢。

与2D不同,对于3D,没有已知的算法可以确定生成给定域的Delaunay三角剖分。然而,有一些网格生成软件包可以生成非常好的四面体网格。比如说

  • /
(免责声明:我是pygmsh和pygalmesh的作者。)