主流程
-
构建初始阵面(三角形面网格)数据;
-
如果相邻的2个阵面夹角过小,则尝试将这2个阵面构成一个四面体单元;如果没有这种阵面,则选择最小阵面开始推进;
-
找出最小阵面的最佳点Pbest,并找到Pbest一定范围内的候选点CandidatePoints;
-
对所有候选点进行质量排序,并按质量从高到低,遍历候选点逐个尝试构建一个有效单元(不相交且满足质量指标),满足质量指标为非必要条件;
-
如果所有候选点均无法构建有效单元,则删除当前阵面附近的单元,放宽质量指标,转到第3步,重复执行。
删除单元的具体做法
- 标记所有包围当前阵面的单元的节点
- 删除所有节点均被标记的单元
- 更新阵面数据
- 更新网格数据
检查单元有效性的做法
- 检查新增的edge与现有阵面是否相交
- 检查新增的face与现有阵面是否相交,新增的face是否与搜索范围的阵面edge相交,面面相交转化为线面相交性判断
- 相交性判断先采用bbox进行预先判断,加快速度
- 需要实现线与面的相交性判断,要计算出交点位置,且交点位置在单元面内