三角形网格上的最近点

时间:2014-12-22 13:39:35

标签: matlab geometry distance mesh

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

我知道如何找到最近的顶点,但最近的点可能在顶点之间。我还想过做一个光线跟踪,但由于我不知道方向,所以这并不总是有效。

4 个答案:

答案 0 :(得分:3)

从该点找到每个三角形的最小距离并找到距离它们最小的最小距离是唯一的方法。如果您有许多点可以找到距离三角形网格最近的距离(这可能包含许多三角形),那么这种强力方法的计算成本非常高。如果你有多个点,我建议先为你的三角形网格创建一个八叉树。这将加速最小距离计算(对于多个点)很多。

答案 1 :(得分:0)

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

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

希望这有帮助。

答案 2 :(得分:0)

您可以最小化每个三角形的距离,如question中所述。

答案 3 :(得分:0)

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

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