geometry - 关于 BSpline 的问题

标签 geometry wolfram-mathematica mesh cad

这是一个data file具有 3D 点簇。现在我们可以用它形成一个 BSpline 曲面。

dat=Import["C:\\Users\\Andy\\Desktop\\Foil.mat"];
surface=BSplineFunction[dat];
ParametricPlot3D[surface[x,y], {x, 0, 1}, {y, 0, 1},
                MaxRecursion->4,Axes->None,Mesh->All,Boxed->False]

现在我们可以看到结构了。但问题是我想制作一个 3D 实体,而这个结构实际上有两个可见的孔。

enter image description here

在下图中我们可以看到,两个角都是开放的,结构不是实心的,而是空心的。

enter image description here

所以我想出了一个解决方案,我确信它可以在视觉上工作,但不会返回坚固的结构。

pic=Show[Graphics3D[
       {Polygon[Table[surface[0,y],{y,0,1,0.005}]],
        Polygon[Table[surface[1,y],{y,0,1,.005}]]}],
        ParametricPlot3D[surface[x,y],{x,0,1},{y,0,1},
           MaxRecursion-> 4,PlotPoints-> 20,
           Mesh-> All],Boxed->False,Axes-> None];

图形网格[ {{ParametricPlot3D[表面[x,y],{x,0,1},{y,0,1}, PlotPoints-> 20,网格-> 全部,盒装-> False,轴-> 无], Graphics3D[{多边形[表[表面[0,y],{y,0,1,0.005}]], 多边形[表[表面[1,y],{y,0,1,.005}]]}], 图片}}]

这是输出。 enter image description here

现在我们将第三张图片导出为 *.obj 文件,其中孔在视觉上已闭合。我们可以在任何基于 CAD 的网格编辑器中导入该文件,例如 Meshlab 。在那里可以看到要检测的孔。

enter image description here

现在有一种简单的方法可以让我们使用 Foil.mat 文件中给定的数据点在 Mathematica 中形成一个坚实的结构。我希望 BSpline 函数中可以使用一些选项来实现此目的。正如人们所期望的那样,我想要一个没有孔的封闭表面。

希望我能够足够明确地解释我的问题。将等待您的回复。

BR

最佳答案

您可能想探索TetGenLink ,Mathematica 中的“隐藏功能”。

TetGen is a quality tetrahedral mesh generator and a three-dimensional 
Delaunay triangulator.   
TetGenLink is a Mathematica application that uses Wolfram Library Link  
to link to TetGen functions. It is used automatically by Mathematica for  
various operations such as interpolation in three-dimensional convex domains.  
However, it can also be used directly where it gives a flexible and innovative  
way to use the functionality of TetGen.

来自帮助的图片:

enter image description here

关于geometry - 关于 BSpline 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414766/

相关文章:

c - 从中心动画正弦波

wolfram-mathematica - 您如何计算 Mathematica 中的条件概率。是否可以?

Python 3.3 - 从规则间隔的顶点创建 3D 网格作为 Wavefront obj 文件

Java快速查找点是否落在国家(多边形)内的方法

math - 如何均匀地随机化球体表面上的点?

python - 计算两条一维线段的重叠距离

parsing - 为什么这种使用 Begin[] 不起作用?

python - 如何使用 pyntcloud 库将点云转换为网格

c++ - 切片网格的算法或软件

geometry - 已知三角形的两个点,如何求圆上的第三个点?