Вот файл данных с кластером 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];
GraphicsGrid[ {{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}]], Polygon[Table[surface[1,y],{y,0,1,.005}]]} ], рис.}}]
Здесь идет вывод.
Теперь мы экспортируем третью картинку, где отверстия визуально закрыты, как файл *.obj. Мы можем импортировать этот файл в любой редактор сетки на основе САПР, например Meshlab. Там можно увидеть дыры, которые нужно обнаружить.
Теперь есть простой способ сформировать прочную структуру в Mathematica с заданными точками данных в файле Foil.mat. Я ожидаю, что некоторые параметры могут быть доступны в функции BSpline
для достижения этой цели. Как и следовало ожидать, я хочу иметь закрытую поверхность без отверстий.
Надеюсь, я смог достаточно подробно объяснить свою проблему. Буду ждать вашего ответа.
BR