给定一个顶点和单形的列表,我想示例化一个scipy.spatial.Delaunay
对象,这样我就可以在我的三角剖分上使用它的Delaunay.find_simplex
方法。我没有找到任何办法这样做。我发现的唯一选择是只从顶点示例化对象,但这种方法:
1.并没有保留我最初的单纯形
1.它看起来不必要的慢,因为它必须重新计算三角测量。
我希望Delaunay类实现一个类方法:
class scipy.spatial.Delaunay:
@classmethod
def from_vertices_and_simplices(cls, vertices, simplices):
...
它允许我从它的顶点和单形示例化一个三角形,
triangulation = scipy.spatial.Delaunay.from_vertices_and_simplices(vertices=vertices, simplices=simplices)
simplex_index = triangulation.find_simplex(point_to_locate)
有什么想法吗
1条答案
按热度按时间hivapdat1#
scipy.spatial.Delaunay
是基于Qhull library的Delaunay三角剖分。它通过计算提升到抛物面的点的(n+1维)凸船体来计算Delaunay三角剖分(例如,参见wikipedia或this presentation的幻灯片16,或other关于提升算法的网络参考)。这意味着它的算法依赖于它的内部qhull表示和数据结构,并且从垂直和单纯形的构造是不够的。因此,为了使用它的
find_simplex
方法,你别无选择,只能从你拥有的顶点重建Delaunay三角剖分。至于你问题中的1,构造的单形不保持你的初始单形的事实可能表明你的初始三角剖分不是Delaunay三角剖分,或者它是一个退化(或接近退化)的点配置(因为Delaunay三角剖分在退化配置之前是唯一的)。另一种可能性是,它只是不保留单形的 * 顺序 *,在这种情况下,你可以在你的顺序和构造的顺序之间Map单形元组(假设你保留了初始顶点的顺序)。