【问题标题】:How can I avoid tetrahedra lying in a plane using scipy.Delaunay?如何使用 scipy.Delaunay 避免四面体躺在飞机上?
【发布时间】:2020-02-13 04:26:19
【问题描述】:

我正在尝试在 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]]]

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

【问题讨论】:

    标签: python scipy triangulation delaunay


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-17
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      相关资源
      最近更新 更多