参数化3D几何以进行形状优化

时间:2011-12-08 08:40:25

标签: wolfram-mathematica

我正在尝试参数化3D几何体以进行形状优化。结构如下所示。另一个真实的例子是here

enter image description here

目前我正在使用BSplines来创建下半部分并使用对称来创建箔的整个下部。这是我得到的。 enter image description here enter image description here

现在我有很多控制点需要注意才能运行形状优化。我也不知道如何以合理的方式将上部与底部水翼部件连接起来。我不知道如何设计上部连接的箔片(箔片的脂肪鼻部分)的良好中间部分。我还需要在几何体中附加flap

请提供一些关于这种曲面参数化的建议,以便我们可以从MMA中操纵几何。控制点越少,优化的情况就越好。可能是3D中某些分析功能的组合。但我怀疑这是否可能。

BR

1 个答案:

答案 0 :(得分:2)

我认为你有两个选择:1)创建几何的第二部分,然后编写一个面 - 面交叉算法来合并它们。 2)创建几何体的第二部分并编写两个函数,如果查询点在几何体内,则返回-1;如果它在外面,则返回+1(其他值将执行)。然后使用RegionPlot3D[ f1[x,y,z]<0 || f2[x,y,z]<0,....]。我们的想法是提取GraphicsComplex并使用它。问题是你可以用这个来近似角落。以下是我的意思。

if1[x_, y_, z_] := If[x^2 + y^2 + z^2 <= 1, -1, 1]
if2[x_, y_, z_] := If[(x - 1)^2 + y^2 <= 1 && -1.5 <= z <= 1.5, -1, 1]

res = RegionPlot3D[
  if1[x, y, z] < 0 || if2[x, y, z] < 0, {x, -2, 2}, {y, -2, 
   2}, {z, -2, 2}, PlotPoints -> 100, Boxed -> False, Axes -> False]

然后提取坐标和多边形。

coords = res[[1, 1]];
poly = Cases[res[[1]], _Polygon, Infinity];
Graphics3D[GraphicsComplex[coords, poly], Boxed -> False]

希望这有帮助。