几何建模基础-拓扑命名实现及优化
1.背景介绍
1.1 什么是拓扑?
拓扑是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。
Body对象的拓扑可以理解为面(Face)与边(Edge)、边( Edge )与顶点(Vertex)之间的连接关系。可以理解Face、Edge、Vertex为拓扑元素。
拓扑结构:
拓扑方向:
1.2 什么是拓扑跟踪?
跟踪造型前后拓扑元素的来源。
1.3 什么是拓扑命名?
1.4 拓扑创建基本造型
enum EnumBodyType
{
TYPE_extrude,
TYPE_revolve,
TYPE_Flight,
TYPE_spiral,
TYPE_sweep,
TYPE_sweepshell,
TYPE_spiralsweep,
TYPE_ruled,
TYPE_loft
}
1.5 拓扑容差
面的容差:所有面的容差,以及所有(三维)边两端点到其邻面距离中的最大值。
2.实现方案
3.问题及改进
- 思路一:
在几何布尔操作过程,如果结果体中的边、面来自原始体,那么在IGraphicsNodeIdAsker中只是拷贝生成这些相应原始体的边、面的编号。也就是,如果原始体的边、面没有出现在结果体中,那么无需拷贝生成相应的边、面编号(效果待定)。
注意:目前扣减体使用连接后或者base 的grep 对被扣减体进行扣减,所以拷贝扣减体边、面的编号导致的追溯信息过多问题不明显。 但如果这个行为修正后,可能会导致追溯信息过多问题(如果扣减体自身比较复杂,例如经过多次打洞、扣减等)
- 思路二:
布尔操作过程,如果结果体的边、面来自原始体,是否可以考虑不用生成原始边、面的编号?如以下追溯信息是否可以省略?
注意:需要评估下如果省略了,找父子关系是否存在问题?这个需要验证 - 理论上找父子关系没有问题,因为该拓扑信息存在的父信息编号就是自身编号,对找父子关系没有影响。
问题:如果不生成原始边、面编号,那么有些modelingoperation里的追溯信息就未空了。 构件编辑器里的布尔减操作。
- 思路三:TopoTrackingObject::m_EncodingDataSet 不保存那些负一的值?
- 思路四:编码的第一、二位合并
- 思路五:编码存储的数据结构调整 - 还没细想,方案待定,效果不明