我试图得到python中多面体的Delaunay三角网,这样我就可以计算出质心。我看到在德拉奈中有一个scipy.spatial
函数,它在n维中工作.麻烦的是,这些文档显示了2D的使用,并且没有给我任何关于如何处理更高维度的指示。能够将这个对象分解成一个数组可能会解决这个问题,但是我不知道如何去做。
我遇到的问题是,在输出对象时,我不知道如何验证它是否正确工作。我在谷歌上找不到任何关于如何绘制多面体的信息,也没有发现如何使用这个正在吐回的物体。
如果我做了
import numpy as np
from scipy.spatial import Delaunay
points = np.array([[0,0,0],[1,0,0],[1,1,0],[1,0,1],[1,1,1],[0,1,0],[0,1,1],[0,0,1]])
Delaunay(points)
我真的很想得到这些四面体的坐标,这样我就能计算出多面体的质心。如果我也能画出与之相关的多面体,那也会很好。我在MATLAB中看到,我可以用一个叫做trimesn的函数来完成这个任务,我从matplotlib中找到了一个,但是它看起来很不一样,而且它的文档也不是很好。
from matplotlib.collections import TriMesh TriMesh.__doc__
u'\n Class for the efficient drawing of a triangular mesh using\n
Gouraud shading.\n\n A triangular mesh is a
:class:`~matplotlib.tri.Triangulation`\n object.\n '
发布于 2016-01-18 17:27:54
你不需要Delaunay三角剖分来计算多面体的质心。质心是四面体质心的加权和,其中重量是每个四面体的体积。
你不需要把多面体划分成四面体。首先,对多面体的面进行三角剖分,即四边形被分割成两个共面三角形等,然后在空间中选取任意点p,比如说原点。现在,对于每个三角形面(a,b,c),计算四面体(p,a,b,c)的符号体积。如果所有三角形都是逆时针方向的,这是可行的。签名的卷通过取消处理所有的事情。用有符号的体积作为重量乘以四面体的质心。
我的书““C.计算几何””的第一章解释了四面体的符号卷。
https://stackoverflow.com/questions/34820373
复制相似问题