转载:(文章很不错)

深入剖析三维几何内核--数据结构和算法简介 (qq.com)

深入剖析三维几何内核(3)--基础数据结构 (qq.com)

重点:

拓扑自底向上至少需要定义:

1.Vertex

2.Edge

3.Loop

4.Face

5.Shell

6.Solid

OCC的BREP结构定义,几何上至少需要定义:

Point  

Curve

Surface

Point 包含基本的坐标X,Y,Z信息以及索引号。

Curve作为抽象几何定义,又可以衍生出各种形式的几何曲线,比如直线Line,圆弧Arc,椭圆弧Ellipse,样条曲线,NURBS,B样条等等。

考虑其中最简单的直线定义:

 1.两端有端点的线段StraightLine;

只需定义两个端点索引即可,其它信息都可以根据端点信息算出;

 2.只有一端有端点的射线Ray ;

需要定义一个端点,再给出射线的方向(方向为三维向量Vector,需要单独给出定义,包括三维向量的加减乘除,归一化等等操作)

 3.两端都没有端点的无线延长线InfineLine

无限直线有多种定义方式,比如函数表达式,或者给定过直线一点以及方向等。

Surface的几何衍生类也类似。

下面在FasCAD中以一个简单的三维实体四面体的创建,描述基本的B-Rep结构自底向上的构造过程。

1. 建立点的信息

1. 首先创建四个点坐标

2. 开启3D捕捉和顶点捕捉,将点两两之间用直线相连

从视图上,我们已经可以表现出一个三维四面体实体结构了;但是这对于B-Rep结构还远远不够,我们需要将完整的拓扑结构建立出来。

2. 在点的基础上构建边Edge

由点的坐标可以构建成一条直线Line,Edge可以由两点构成,Line和Edge建立映射关系,需要注意的是所有的Edge是有方向的,即一个面上的所有边的方向首尾相接而成。

3. 建立环LOOP

所有的Edge可以构成一个环Loop,环最重要的特点是有方向性,可以作为内环和外环。比如一个面Face里有个孔Hole,Face的边界为外环(Outter Loop),孔的Loop为内环(Internal Loop),内环的方向通常和外环方向相反。

4. 建立面Face

三条Line构成一个封闭的平面三角形Surface,Surface和Face可以建立映射关系。一条Loop就可以构建面的拓扑结构了,同样,面也有方向,右手左手准则都可以,所有面的准则保持一致即可,四根手指的方向指向Loop的方向,大拇指方向即为面的方向。Face的方向除了对显示光照有用外,对使用有限元单元方法的刚度矩阵计算和组装也非常关键。

5. 建立实体Solid

有了面的信息后,就可以将所有的Face定义成一个Shell,然后将Shell封装成一个实体Solid。

这样我们就构建了一个完整的四面体B-Rep实体数据结构实例。

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐