Opennurbs Boundary Representation Oritation

Opennurbs Boundary Representation Oritation
Opennurbs Brep Data Structure

z在Opennurbs数据结构里的 m_Reversed flag 共计4处,

  1. Edge 和 Curve3d 之间的 m_bReversed
  2. Trim 和 Curve2d 之间的 m_bReversed
  3. Trim 和 Edge 之间的 m_bRev3d
  4. Face 和 Surface 之间的 m_bRev

Opennurbs Brep 类视图
Opennurbs Boundary Representation Oritation
Opennurbs Boundary Representation Oritation
总结 Opennurbs Brep几何拓扑间的Oritation关系:

  1. Geom Direction:
    Curve Tangent Direction, Surface Normal

  2. Topo Oritation:
    Trim Oritation: Curve2d Direction+ m_bReversed
    Edge Oritation : Curve3d Direction+ m_bReversed
    Face Oritation: Surface Normal + m_bRev

  3. m_bRev3d :
    2d trim and 3d edge have opposite orientations.

  4. m_bRev :
    outer loops are always oriented counter-clockwise,no depends m_bRev

  5. m_Vi[2]:
    m_Vi[0] is the Edge Start, not the Curve start

原则4的好处:
1.可以共享,Opencascade里体现更为明显(拉伸的上下 Face)
2.做boolean运算时可以不用翻转几何或者拓扑
3. 没有数据冗余,如果依赖m_bRev,相当于缓存冗余数据

关于Oritation的设计,OCCT的还有些不一样,看到一些解读OCCT Oritation的文章OCCT NOTE ,感觉解读的不是很到位,后面会写一篇OCCT的Oritation的~