python - 如何使用 scipy.Delaunay 避免四面体躺在飞机上?
问题描述
我正在尝试在 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]]]
你知道我该如何解决这个问题吗?非常感谢。
解决方案
推荐阅读
- git - GIT合并不相关的历史
- vue.js - 为什么通过 scrollBy() 滚动在 Vue 组件更新挂钩中不起作用?
- python - 如何通过标签获取所有元素?
- angular - 显式指定材质下拉选择的类型而不是动态
- geospatial - 可以使用空间索引加速“单个几何内的点”查询吗?
- android - 刷新小部件上的现有数据
- excel - 跨工作表的 Excel VBA 克隆(命名)表
- clojure - clj-http 异常:ExceptionInfo clj-http: 状态 415 clj-http.client/wrap-exceptions/fn--1863 (client.clj:196)
- amazon-web-services - AWS - 使用 EC2 实例的 FailedInvocations
- php - 在 PHP 中从数组创建多维树对象