【问题标题】:Delaunay: Triangulate two point sets with the best fitting meshDelaunay:使用最佳拟合网格对两个点集进行三角剖分
【发布时间】:2012-07-18 22:17:20
【问题描述】:

我得到了一个具有随机分布点的云和另一个具有相同点但随机移动的云。所以云 A 的每个点在云 B 中都有一个对应的点。

现在我想用相同的三角形网格对两朵云进行三角剖分,找到两朵云中交点最少的网格。

有什么想法吗?

谢谢

【问题讨论】:

  • 这个有NP难的声音;它需要选择具有某些属性的边。您是否考虑过任何启发式方法?

标签: algorithm math computational-geometry triangulation


【解决方案1】:

创建云 A 中点的随机三角剖分,并测量 A 和 B 中的交叉点数。然后应用 simulated annealing 随机添加/删除/移动边缘,以保留您有兴趣保留的三角剖分特征和测量每次迭代后的交叉点数。

作为起点,如果您不想从一组随机边开始,您可以从 A 中的 Delauny 三角剖分开始,然后测量 B 中的交点总数。继续进行模拟退火方法和以前一样。

【讨论】:

  • 所以这是一种蛮力方法?
  • 模拟退火不是蛮力;不能保证找到最佳解决方案。它可能会找到一个足够好的,并在合理的时间内完成。正如我在对您的问题的评论中所说,这听起来可能是一个 NP 难题,使得蛮力方法不切实际。由于我还没有弄清楚它是不是 NP 难,所以完全有可能(甚至可能)我最初的反应是错误的,而且它比 NP 难。如果是这种情况,则存在一个多项式时间算法来找到最佳解决方案。
【解决方案2】:

第一个非常简单的方法,对半移动位置进行(Delaunay)三角剖分,并将其用于两朵云。如果移动不是太大,可以产生很好的效果。

如果存在负向三角形,则三角剖分有交点。因此,两朵云的良好三角剖分由两朵云中正向的三角形组成。

方法可以非常类似于和提到的,在云 A 上创建初始三角剖分并尝试在云 B 中局部修复负向三角形。可能标准翻转可以解决它。

我认为可以检查两个云中哪些点(区域)不能很好地进行三角剖分,方法是在两个云上制作正向三角形的交点,并寻找不在交点的任何三角形中的点。为此,(需要)为相邻区域(具有相邻节点)取三角形节点就足够了。

【讨论】:

    猜你喜欢
    • 2011-07-15
    • 2019-10-05
    • 2015-02-21
    • 2015-01-07
    • 2017-06-18
    • 1970-01-01
    • 2020-06-02
    • 2015-06-30
    • 2019-04-18
    相关资源
    最近更新 更多