2014-12-22 105 views
1

我有一个三角形网格的表面描述。我还有一个位于表面之外的点P.我怎样才能找到最接近P的表面上的点?三角形网格上的最近点

我知道如何找到最近的顶点,但最接近的点可能是顶点之间。我也想过做一个光线追踪,但这并不总是奏效,因为我不知道方向。

回答

2

找到从这个点到每个三角形的最小距离,并找到它们的最小最小距离是唯一的方法。如果你有很多点来寻找离三角形网格最近的距离(这个网格又可能包含很多很多的三角形),这种蛮力法在计算上会非常昂贵。如果你有多个点,我建议首先为你的三角形网格创建一个八叉树。这将加快最小距离计算(多点)。

0

我找不到任何内置于matlab的内容,但是我找到了可能对您有帮助的说明/视频。希望别人能找到更有用的东西,如果这还不够的话。该网站是here

看起来它必须是一个交互式解决方案。如果链接本身没有帮助,那么该链接中留下了一些可能有用的评论。

希望这会有所帮助。

0

您可以最小化到这个question中讨论的每个三角形的距离。

0

一种可能性是使用用户贡献从FileExchange:

  • 功能point2trimesh由Daniel弗里希返回网格上作为第二输出的最近点。有可能使用并行化,使其相当快
  • 函数pointTriangleDistance Gwendolyne Fischer只处理单个面的情况,但很容易扩展为三角形网格。