【问题标题】:How can I copy a Delaunay triangulation to new points?如何将 Delaunay 三角剖分复制到新点?
【发布时间】:2018-11-26 04:27:27
【问题描述】:

我目前在scipy.spatial.Delaunay中使用Delaunay函数,像这样(简化):

import numpy as np
from scipy.spatial import Delaunay

points1 = np.random.rand(10,2)
points2 = np.random.rand(10,2)

tri = Delaunay(points1)
# tri2 = tri(points2)? - need help here

我希望对 point2 应用相同的三角剖分 - 如果我再次运行 Delaunay,我可能会得到不同的三角剖分。

是否可以“复制”一个三角测量并将其应用于一组不同的相同大小的点?

【问题讨论】:

  • 如果点相差太大,您可以接受三角形重叠的结果吗?
  • @DavisHerring 是的-我的观点是面部标志,所以应该没有太大区别
  • 您想对混合三角测量做什么 以使其重要?您已经可以将d.simplicesd.neighbors 与您想要的任何点数组一起使用。
  • @DavisHerring 我正在尝试创建一个一致的三角形“面罩”——这样如果一个人在微笑或皱眉头,三角测量就不会改变——你能解释一下如何使用简单性和邻居属性来实现吗?我不是很熟悉。
  • Delaunay 对象,在其最基本的用法(这两个属性)中,定义了三角剖分的 topology,其 geometry 您已经拥有(并作为输入提供)。无论您想对三角测量做什么(例如,渲染它),都可以通过将该拓扑与您喜欢的任何几何图形结合使用来完成 - 原始是显而易见的选择,但它没有区别使用另一个相同的基数(只要它不是“太不同”)。

标签: python scipy delaunay


【解决方案1】:

为了完整起见,基于 cmets 中的Davis Herring's 响应-

tri.simplices 包含输入索引之间的关系,不依赖于实际值。

如果我在points[0]points[3]points[4] 之间找到一个三角形,tri.simplices 将包含[0,3,4]

所以要使用不同的“点”访问相同的三角测量,我可以像这样访问它们:

points2[tri.simplices]

【讨论】:

    猜你喜欢
    • 2015-01-07
    • 1970-01-01
    • 2019-04-18
    • 2020-08-05
    • 2021-05-14
    • 2013-05-12
    • 1970-01-01
    • 2016-02-08
    • 2014-01-21
    相关资源
    最近更新 更多