【问题标题】:How to identify Points Outside a 3D mesh in Matlab如何在 Matlab 中识别 3D 网格之外的点
【发布时间】:2018-11-23 15:59:19
【问题描述】:

我有两个大型数据集,一个是对象的外部,一个代表对象内部的流体流动。我担心使用我拥有的网格,一些数据可能会被错误地表示,或者没有很好地建模,并且在第一个数据集之外。

在 Matlab 中,我使用 trisurf 从第一个数据集创建了一个网格,并且很好奇是否有一种方法可以检查网格之外的点。我见过二维版本的多边形和一些阈值函数,但表面不是超级规则的,而且这些并没有真正考虑网格。感谢您的帮助!

【问题讨论】:

  • 显示一些代码。
  • @Grant Miller 这是用于绘制数据的代码,因此 trisurf 从数据 V 创建了一个网格,我想看看 D 中是否有任何点超出该范围。谢谢!图(88),clf,trisurf(F,V(:,1),V(:,2),V(:,3)); title('单孔喷G1'); xlabel('X(mm)');ylabel('Y(mm)');zlabel('Z(mm)');坚持图(88), scatter3(D(:,1),D(:,2),D(:,3), .2,[1,0,0]);

标签: matlab mesh large-data points boundary


【解决方案1】:

您没有指定您的对象定义为哪种数据/格式。例如,如果您有对象的 Delaunay 四面体/网格(如果没有,您可以使用 delaunay 从点云创建一个),您可以使用 tsearchn 函数来确定点是否在对象(网格)内/外。

https://www.mathworks.com/help/matlab/ref/tsearchn.html

【讨论】:

  • 对象边界是来自点云的 Delaunay 网格,但是当我使用 tsearchn 时,它给了我以下错误:使用 tsearchn 时出错(第 25 行)X 和 XI 必须具有相同的列数。我的数据和边界点的条目数量不同,我该怎么办?如果它可以处理不同大小的数组,该函数看起来会非常有用。
  • X 和 XI 必须具有相同的列数(在您的情况下为 3 用于 3D),但可以具有不同的行数(如不同的点数)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 2014-05-13
相关资源
最近更新 更多