【发布时间】:2011-11-16 21:41:54
【问题描述】:
这是一个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 实体,而这个结构实际上有两个可见的孔。
在下一张图中,我们可以看到两个角都是敞开的,结构不是实心的,而是空心的。
所以我想出了一个解决方案,我确信它可以在视觉上工作,但不会返回实体结构。
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,Mesh-> All,Boxed->False,Axes-> None], Graphics3D[{Polygon[Table[surface[0,y],{y,0,1,0.005}]], 多边形[Table[surface[1,y],{y,0,1,.005}]]}], 图片}}]
这里是输出。
现在我们将第三张在视觉上封闭了孔的图片导出为 *.obj 文件。我们可以将该文件导入任何基于 CAD 的网格编辑器,例如 Meshlab。可以看到要检测的孔。
现在有一种简单的方法可以让我们使用 Foil.mat 文件中的给定数据点在 Mathematica 中形成一个实体结构。我希望BSpline 函数中可能提供一些选项来实现这一点。正如人们所期望的那样,我想要一个没有孔的封闭表面。
希望我能够足够明确地解释我的问题。将等待您的回复。
BR
【问题讨论】:
标签: geometry wolfram-mathematica mesh cad