三角网格上最近的点

4

我有一个三角形网格描述的表面。我还有一个点P,它位于表面外。如何找到距离P最近的表面上的点?

我知道如何找到最接近的顶点,但最接近的点可能在顶点之间。我也考虑过进行光线追踪,但这并不总是有效,因为我不知道方向。

4个回答

4

找到点到每个三角形的最小距离,然后从中找到最小的最小距离是唯一的方法。如果您需要找到到三角网格(其中可能包含许多三角形)的最近距离,并且有许多点,则此暴力方法将非常耗费计算资源。如果您有多个点,建议首先为三角网格创建八叉树。这将大大加快最小距离计算(对于多个点)。


0

我在Matlab中找不到任何内置的东西,但是我找到了一份描述/视频,可能会对您有所帮助。如果这还不够的话,希望其他人能够找到更有用的东西。 链接在这里

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

希望这可以帮助你。


0

你可以按照这个问题中所讨论的方法,将到每个三角形的距离最小化。


0

一种可能性是使用来自FileExchange的用户贡献:

  • Daniel Frisch的函数point2trimesh返回网格上最近的点作为第二个输出。可以使用并行化,使其变得相当快
  • Gwendolyne Fischer的函数pointTriangleDistance仅处理单个面的情况,但很容易扩展到三角形网格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接