底层数据结构的主要特征:
- 对三角形网格没有限制,处理一般的多边形网格。
- 顶点,半边,边和面的显式表示。
- 有效访问顶点的单环邻域。
- 能够处理非流形顶点(例如两个面仅在一个顶点相交)。
C ++实现的目标/特性是:
- 灵活性:
- 为标量和坐标选择合适的类型(例如浮点数,双精度算法和精确算术点和两维,三维或n维点)。
- 通过您自己的属性/属性增强每个项目类型,例如 将法线向量或FaceHandle添加到Vertex类。
- 效率:
- 避免虚拟继承和虚函数调用的开销。
- 在编译时解析尽可能多的类型/属性依赖性,而不是在运行时测试属性(例如,面的法向量)。
- 手柄的类型安全,无类型铸造(*):顶点,(半)边缘,面相互认识及其相应的手柄。