圆台体三角形面单元剖分策略的研究

(整期优先)网络出版时间:2011-01-11
/ 2

圆台体三角形面单元剖分策略的研究

王迷迷顾红力

王迷迷东南大学成贤学院

顾红力徐州工程机械高级技工学校

【摘要】三角形面单元是进行实体加工计算机模拟的基础。因此三角形面单元剖分是进行实体加工计算机模拟的重要环节。本文在分析单元剖分等领域现状基础上,介绍了三角形面单元剖分相关的三角形单元剖分定义,开展了圆台体三角形面单元剖分策略研究。

【关键词】三角形面单元圆台体STL文件

【中图分类号】G712【文献标识码】A【文章编号】1674-4810(2011)01-0054-03

一引言

三角形单元剖分问题是随着计算机图形学的发展而被提出来的,由于三角形是最简单的多边形,易于用计算机处理,易于表示,易于存储,所以受到广泛关注。而在用三角形网络描述物体时,人们发现不同的三角形网络最后得到的模型质量不同。为了追求更完美的模型,于是三角剖分问题被正式提出来。

本文对圆台体三角形面单元剖分策略进行研究,提出了三角形面单元剖分策略,以生成的STL格式三角网格文件为数据源,采用OpenGL作为三维图形接口,以VC++6.0为开发环境,编程实现了圆柱体与圆台体面单元STL文件的显示,本策略的研究对实现制造业的实体加工具有重要的意义。

二三角形单元剖分的基本概念

定义1:三角形单元剖分是代数拓扑学里最基本的研究方法。在这里给出一个一般性的定义,二维平面上的三角形单元剖分的一般性定义如下:平面上有N个点,用不相交的线段将这些点连接起来,每条线段的端点来自于这N个点,使得平面上每一个区域都是一个三角形,这些三角形所构成的一个网格就成为该平面上这N个点的一个三角形单元剖分。图1表示的是平面上6个点的一个三角形单元剖分。

.

在上述定义中应该注意到“一个三角形单元剖分”这一点,为什么是一个,难道还有第二个剖分吗?回答是肯定的。如图2所示的就是这6个点的另一种三角形单元剖分。为什么会出现这种情况?这主要是按不同策略进行三角剖分造成的。三角剖分应用的策略主要有:(1)试图使剖分所得的三角形最大限度地接近正三角形。实现这种策略主要是由基于Delaunay三角剖分算法实现的;(2)力图使剖分出的三角形的边长总和最短、费用最小。实现这种策略的主要有两种算法:模拟退火算法和最小权三角剖分算法,它们是从不同角度实现这一策略的;(3)力图使算法的时间复杂度最小。实现这一类策略的算法强调其实用性,它的重点放在如何优化算法,从而使其更快的在计算机上运行。以上是主要的三种标准,当然还有其他个别标准,但其通用性不强,现就不再赘述了。

为了更好的理解三角形单元剖分,下面引入矢量、法向量的概念。

定义2:代数学所谓的矢量概念则分为在有限维向量空间中与线性相关、线性变换的密切关系,而此不必限制于三维组,且假定有理运算能够施行。

矢量在立体几何学概念中就是指根据物体的几何性质而确定的一种定位方法,主要通过线性相关和线性变换来解释几何问题。

矢量图形由被称为矢量的数学对象所定义的线条和曲线构成,矢量根据图形的几何特性来进行描绘生成图像。

物理量有标量、矢量之分,将包含了由数值大小且具有方向性才能完全确定的量称之为物理矢量。

定义3:所谓的法向量即为垂直于平面的一个向量(即以任意平面内都存在无数条法向量)。

三角形单元是指平面上的三角形,而三角形面单元以三角形单元为基础,通过坐标转换工作,将平面上的点转换为空间上的点,从而得到三角形面单元。

三圆台体三角形面单元剖分策略

圆台体,俗称截头圆锥体,针对圆台体形体的特殊性,研究出了一种新颖的三角形面单元剖分方法,这种三角形面单元剖分方法既适用于圆台体也适用于圆锥体,具体剖分思想步骤如下:将圆台展开为一扇区,为空间的一平面;将扇区补成以O为圆心的扇形;取定点A,如图3所示,令AQ=L,设步长为a,按照步长a所分得s份,s=L/a的整数部分,为了能将AQ等份划分为整数份,令实际划分步长为

a',实际划分份数为n',则有。

(1)取AB=a',以点A为起始点,以A为圆心,a'为半径,画弧,所得弧与母线的焦点为A1,以B为圆心,a'为半径,画弧,所得弧与AQ的交点为C,以点A、B分别为圆心画弧,令两弧的交点为B1,连接AB1、BB1。

(2)以点C为圆心,a'为半径,画弧,所得弧与AQ的交点为D,与以点B为圆心画的弧的交点为C1,连接BC1、CC1。

(3)以点D为圆心,a'为半径,画弧,所得弧与AQ的交点为E,与以点C为圆心画的弧的交点为D1,连接CD1、DD1。

(4)以此类推,直至将AQ等份划分。

(5)连接点B1、C1、D1……,得到圆弧A1Q1。

(6)这样就得到第一层小扇区,并且这层扇区剖分为等边三角形和等腰三角形,需要说明的是当a'足够小时,等腰三角形近似于等边三角形。

(7)接下来进行第二层小扇区的剖分,由于A1B1的长度不足步长,所以,以B1为圆心,a'为半径画弧,弧与母线的焦点为A2,与以C1为圆心画的弧的焦点为B2;同理类推,直至将A1Q1等份划分,连接点A2、B2、C2……,得到圆弧A2Q2,这样就得到第一层小扇区,并且这层扇区同样由等边三角形和等腰三角形组成。

(8)依次循环,奇数层按照步骤(1)至(5),偶数层按照步骤(6),直到将圆台侧面展开的整个扇区完全剖分成三角形单元。

(9)得到每个三角形顶点的二维平面坐标。

(10)将二维空间的三角形顶点坐标转换为笛卡尔几何坐标点(x,y,z),这样原来参数空间中的三角形即映射为笛卡尔几何坐标系中的三角形面单元。

.

按照上述思想将圆台进行剖分,AQ被等份划分也就是圆心角AOQ被等份划分,知道这一点后就更加便于剖分上的计算工作。

四圆台体三角形面单元剖分计算机实现技术

圆台体三角形面单元剖分的计算机实现策略,分为三个步骤完成,采用C语言进行编写,具体计算机实现过程见图4。

.

当输入参数值分别为上底面半径为3,下底面半径为10,高为30,剖分步长为2时,扇区的三角形单元剖分结果见图5。

五圆台体面单元STL文件的生成

为了生成STL文件,下面将以上工作中得到的三角形面单元顶点的三维坐标按照STL二进制文件格式进行存储,主要编程工作如下:

首先,建立一扩展名为stl的文件,并定义指针fp,用于指向此文件。其次,将零件名与三角形面单元数写入.stl文件中。在二进制格式的STL文件中,前80个字节存储零件名,接着用4个字节存储三角形面单元的数目。再次,计算出每一个三角形面单元的法向量。三角形面单元的矢量信息,用于表达物体的内外指向。每个小平面必须有一个单位矢量从实体内部指向实体外部,使三角形面单元的法矢量为(ni,nj,nk),然后根据三角形面单元顶点的三维坐标,利用相关公式即可计算出所有三角形面单元的法矢量。最后,存放每一个三角形面单元的信息。STL文件应该保存有三角形面单元三个顶点的坐标值,并按“右手规则”确定每个小三角形面单元顶点的次序,根据STL模型的正确条件,依次将每一个三角形面单元三个顶点的三维坐标及其法向量按照逆时针方向进行存储,最终生成STL数据文件。

六实例

当圆台体的上底面半径r=1,下底面半径R=8,高h=10,横向剖分步长a=0.5时,剖分三角形面单元顶点的三维坐标如表1所示:

.

.

七结束语

圆台体的使用范围很广,常用于水泥、化工、冶金、机械等行业中。因此,圆台体的实体加工制造具有重要作用,本文实现以三角形面单元剖分策略为基础的面单元STL文件显示,对实际加工生产有着一定意义。

参考文献

[1]朱伟民.实用试卷成绩统计分析[J].中国教育技术装备,2006(5):13~15

[2]周培德.平面点集三角剖分的算法[J].计算机辅助设计与图形学学报,1996(2):259~264

[3]王巍.特征约束下多边形优化三角剖分部分算法的研究[D].哈尔滨工程大学,2000

[4]董得义、谢川、李彦生、郭宇.基于MFC的STL格式数据文件接口问题研讨[J].现代制造工程,2005(5):53~55