在学习 Gmsh 结构化网格划分、Transfinite Surface、Coons Patch 以及 OCC 几何建模时,一个非常核心的概念是:OCC 中的 TopoDS_Face 并不是单纯的曲面对象,而是一个带有拓扑边界的 BRep 面。
可以先用一句话概括:
TopoDS_Face是一个拓扑面,它引用底层Geom_Surface作为支撑曲面,并通过Wire / Edge / PCurve在该曲面的参数域中裁剪出真正有效的面区域。
Face – part of a plane (in 2D geometry) or a surface (in 3D geometry) bounded by a closed wire —OCC 官方文档
本次内容主要围绕以下几个问题展开:
TopoDS_Face 和 Geom_Surface 的关系Geom_Surface 的参数域是什么PCurve 如何裁剪出 TopoDS_Face 的真实区域OCC 的 BRep 建模思想可以分成两个层次:
Geom_Surface | ||
Geom_Curve | ||
Geom2d_Curve | ||
TopoDS_Face | ||
TopoDS_Edge | ||
TopoDS_Wire | ||
TopoDS_Solid |
可以将 TopoDS_Face 理解为:
Geom_Surface 本质上是一个从二维参数到三维点的映射:
因此,参数域就是所有允许输入的 (u,v) 组成的范围。不同类型的 Geom_Surface,其 u, v 参数含义并不相同。
平面可以写成:
其中:
u:沿平面一个方向的参数;v:沿平面另一个方向的参数。对于标准平面:
圆柱面的标准参数化可写成:
其中:
个人理解:对圆柱面来说,UV 参数域中一条水平直线
v = H,映射到三维空间后可能是一个圆。也就是高度相同,绕着角度方向走
这是底层曲面自己的参数范围,例如:
Geom_Plane | u, v |
Geom_CylindricalSurface | u v 可无限 |
Geom_SphericalSurface | u v 有限 |
Geom_BSplineSurface | u, v |
真实参数区域是由 PCurve(Edge 在某个 Face 的 UV 参数域中的二维曲线)裁剪出来的区域。 一个 TopoDS_Face 通常包含一个或多个 Wire。
Geom_Surface Class ReferenceAdaptor3d_CurveOnSurface Class Reference