点火器厂家
免费服务热线

Free service

hotline

010-00000000
点火器厂家
热门搜索:
成功案例
当前位置:首页 > 成功案例

座人包装CAD三维图形消隐中八叉树算法的应用

发布时间:2021-10-28 00:22:59 阅读: 来源:点火器厂家

包装CAD三维图形消隐中八叉树算法的应用

一、三维图形消隐的概述

造型是计算机三维图形处理的基础,而消除隐藏面、隐藏线(简称消隐)则是三维造型的关键。消隐就是运用某种算法把物体上看不见的线或面从画而中消去或者用虚线画出。消隐算法的核心就是判断三维模型的表面是否可见。

抽象来看,一种消隐算法可以看作一个五元组,即HA=(I,O,D,P,S)其中,I为要进行消隐处理的三维对象集合;O为经过消隐处理的二维对象的集合;D为进行消隐处理时所采用的数据结构;P为进行消隐处理所需基本操作过程的集合,主要包括分类、排序、三维坐标变换、透视投影变换、基本图形元素间的求交计算、两个区域重叠判断、点与区域人包含测试、面的朝向测试;S为消隐策略,即规定上述各基本操作过程被采用的先后次序。

消隐算法通常根据其处理场景时是直接对物体定义进行的,还是对它们的投影进行的而分为物空间算法和像空间算法两类。物空间算法将场景中的各物体和物体各组成部件相互进行比较,以最终判别出哪些面可见;而像空间算法则在投影平面上逐点判断各像素所对应的可见面。虽然各种消隐算法的基本思想各不相同,但他们大多采用了排序和连贯性方法以提高效率。

二、八叉树算法在三维图形消隐中的应用

1用八叉树表示三维形体

分层树结构,称作八叉树(octrees),可用来在图形系统中表示实体。构造树形结构,要求每个结点与三维空间区域相符。这种实体表示利用了空间相关性以减少三维物体的存储需要。它也提供了存储有关物体内部信息的便利表示。

八叉树编码方法将三维空间区域(一般是立方体)分成卦限(octants),且在树上的每个结点存储8个数据元素。三维空间的每个元素称为体素,或体元。当卦限中所有体元的类型相同时,这类型值存入相应的结点数据元素中。空间的空区域表示为体元类型“void”。非均质卦限再分成卦限,结点相应的数据元素指向树中下一个结点。该分法递归的进行下去,直到区域仅含均质卦限,此时树上每个结点有0到8个直接后代,如图1所示。

三维空间区域

八叉树结点表示中的数据元素

图1〓八叉树数据结构

2显示线性八叉树表示的物体的方法

线性八叉树是只列出所有满的叶子结点的表示方法,每个结点的表示是十分简单的,因此这种八叉树占据内存甚少。在对立方体作八等分时,我们以图1的方式对每个象限进行编号。这样,每个结点可以用n位八进数的数串来表示,它最左一位对应第一次划分,其余依次类推。在对结点进行编码后,整个八叉树则是根据深度第一的方式对其遍历后,用依次列出满的叶结点的编号这样的方式来表示的。

显示八叉树表示的物体时,我们先假定视点的位置为(x1,y1,z1),从原点到视点的方向,也可以认为是观察平面的法向量。我们要根据(x1,y1,z1)诸分量的正、负,确定不同象限在显示时的优先级,从而列出线性八叉树中诸结点显示次序的队列,以此保证该看到的就显示出来。根据这一点,在确定不同象限中立方体的显示次序时,将最可能被遮挡的放在最前面,最不可能被遮挡的放在最后面。例如,当x1,y1,z1均大于零时,它的优先级次序为:04216537。

3八叉树算法

当用两夹具以1定的速度分离并拉伸试样八叉树表示来描述被观察体时,通常按由前往后次序将八叉树结点映射到观察面片,以完成隐藏而消除。这种方法的思想是这样的:假定观察的方向正好先与0,1,2,3这四个结点对应的内容相遇,于是在这四个子区域前面的面是可见的,后面四个子区域,或者前面四个子区域的后面部分,则可能为前面的所遮挡。在这个假定的观察方向与显示对象安排的基础上,如果我们以0,1,……,6,7这一自然次序处理八叉树的结点,或者说以深度第一的次序遍历表示物体7.送油阀中活塞与活塞套有损伤或弹簧变软的八叉树,当遇到叶结点时,若它所对应的帧缓冲区中的像素还是背景色,那么就把这个结点对应的显示属性值作为这些像素的值。若像素中以不是背景值,那么不要改变它。这样,原来是未被占据的体素对应的像素位置总是空白的。而一个以完全被遮挡的结点,由于它的子结点对应的区域一定也被遮挡,因而也可以不必处理它们。

相反

通过对八叉树预先作必要的变换2中所介绍的),可以变到上面这种“标准”的情况,也就是可以通过变换来处理不同的视点及观察方向。因此,我们在具体实现时,总是假定只处理这种“标准”情况。并且还假定首先把八叉树变成可见面的四叉树表示,另外公司还针对1些特殊行业的特殊要求专门定制1些疲劳实验机最后再转移到帧缓冲区中去。

4具体实例的实现

本文作者以VisualC++60为开发工具,用该算法完成了凸体的消隐。下面以一个具体凸体为例,如图2所示,绘制了它的消隐立体图。该凸多面体的10个顶点已经按逆时针方向编号,1至10顶点坐标分别为(2,27,2)、(2,27,0)、(2,27,0)、(2,27,2)、(2,27,2)、(2,27,2)、(2,27,0)、(0,17,2)、(0,17,2)和(2,27,0)。

(文/付春英 和克智 刘志鹏)

中国包装工业

五金件万能试验机
抗震砖压力试验机
巴氏硬度计
便携式洛氏硬度计