用Matlab计算点到三维三角网的距离
我有一个3D点云,我已经使用Matlab的函数DelaunayTri将其转换为Delaunay三角剖分。现在我有一个3D的测试点,我想用Matlab计算这个点和三角测量之间的最小距离 到目前为止,我一直在考虑在Matlab中使用DelaunayTri类的最近邻(…)成员函数,在三角剖分中找到离我的测试点最近的点,然后计算它们之间的距离。这很重要,但不是我真正想要的 一般来说,三角剖分上距离我的测试点最近的点不是三角剖分的顶点,而是三角形面上的某个地方。我怎样才能找到这一点用Matlab计算点到三维三角网的距离,matlab,geometry,triangulation,delaunay,Matlab,Geometry,Triangulation,Delaunay,我有一个3D点云,我已经使用Matlab的函数DelaunayTri将其转换为Delaunay三角剖分。现在我有一个3D的测试点,我想用Matlab计算这个点和三角测量之间的最小距离 到目前为止,我一直在考虑在Matlab中使用DelaunayTri类的最近邻(…)成员函数,在三角剖分中找到离我的测试点最近的点,然后计算它们之间的距离。这很重要,但不是我真正想要的 一般来说,三角剖分上距离我的测试点最近的点不是三角剖分的顶点,而是三角形面上的某个地方。我怎样才能找到这一点 谢谢你 我已经为这些东
谢谢你 我已经为这些东西编写了代码,但它们不在文件交换中。不过我可以相信我会通过直邮的方式把它们寄出去 找到到凸包的距离相对容易,但不是很简单。delaunay细分无论如何都以凸包为边界。因此,您可以很容易地将细分转换为凸面外壳,或者只使用凸面外壳。请注意,对于许多用途来说,凸包通常是非常糟糕的近似值,特别是当您将其用于颜色映射时,这可能是我看到的最常用的颜色映射。在这种情况下,alpha形状是更好的选择。Alpha形状也将有一个三角形的边界曲面,尽管通常它不是凸面 因此,要在凸三角剖分中找到最近点:
通过从搜索中排除远离问题点的面,也可以稍微减少搜索空间。使用这些刻面法线进行测试。我为这个问题编写了工具。这是一种“蛮力”解决方案,也适用于非凸曲面 因此,基本上你要问的是,给定一个内部点的坐标和四个顶点的坐标,如何找到离四面体曲面最近的点?@Viruss mca:请仅对代码使用代码格式。@Dan:是的,我认为这是正确的。我必须承认,我不知道如何找到Matlab返回的结构中的4个顶点。然而,我的测试点不在四面体之内,而是在四面体之外。@Patrick看起来他们认真地改进了他们的delaunay方法,因为我上次使用了它们。查看
pointLocation
方法。我想你也会发现FaceNormal
非常有用,因为从你的点到每个面的最短距离就是该点的法线face@Dan:谢谢你。通过点定位,如果我知道一个内点,我可以找到四面体。最近邻居返回的点是正确四面体上的点,这是真的吗?假设我有一个正确的四面体,我如何让三角形使用FaceNormal?谢谢你的解释。我不完全理解第3步和第4步。。。距离什么?如果能得到你的源代码那就太棒了!如果你愿意分享,我将非常感激!