三维几何内核知识学习------数据结构
转载:(文章很不错)
深入剖析三维几何内核--数据结构和算法简介 (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实体数据结构实例。
更多推荐
所有评论(0)