我怎样才能避免四面体躺在一个平面上使用scipy.Delaunay?

2024-07-07 05:55:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

import numpy as np
from scipy.spatial import Delaunay

# Coordinates of 3x3x3 equally distant points of a cube
x = np.linspace(0, 1, 3)
X1, X2, X3 = np.meshgrid(x,x,x)
vertices = np.hstack([X1.reshape(-1,1),X2.reshape(-1,1),X3.reshape(-1,1)])

# Using Delaunay
tri = Delaunay(vertices).simplices

# tetrahedra
simplices = vertices[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]]]

你知道我怎么解决这个问题吗?非常感谢


Tags: ofimport网格nptridelaunay平面x1
1条回答
网友
1楼 · 发布于 2024-07-07 05:55:25

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

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

相关问题 更多 >