[发明专利]一种三维平面实体的布尔并运算方法有效

专利信息
申请号: 201710711666.1 申请日: 2017-08-18
公开(公告)号: CN107564103B 公开(公告)日: 2023-02-28
发明(设计)人: 许社教;杜美玲;吉王博;邱扬;田锦;朱言午;张建国 申请(专利权)人: 西安电子科技大学
主分类号: G06T17/10 分类号: G06T17/10
代理公司: 西安吉盛专利代理有限责任公司 61108 代理人: 陈光磊
地址: 710071 陕西省*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种三维平面实体的布尔并运算方法,其基本思想是:对于实体A中的每个面,若该面完全在实体B之外,则保存该面,若该面与实体B的面同向共面且都不是内环面,则这两个面进行二维布尔并运算,保存运算结果,若该面不属于上述两种情况,则用该面截切实体B,得到剖面多边形,用该面和剖面多边形进行二维布尔差运算,保存运算结果;交换实体A和实体B,做同样的处理;对保存的结果进行删除重复面、删除悬挂面和面合并的后处理,最终得到实体A和实体B布尔并运算的结果。本发明具有简单易行、算法逻辑严密和几何完备性好、算法运算量小等优点,可用于CAD、CAM、CAE、计算机动画、虚拟现实、3D打印等领域的三维实体建模。
搜索关键词: 一种 三维 平面 实体 布尔 运算 方法
【主权项】:
一种三维平面实体的布尔并运算方法,其特征是:包括如下步骤:步骤101:依次读入参与运算的两个实体A和B的面数据,其中实体A的面、环、边和点的信息分别保存在A_Face_list、A_Loop_list、A_Line_list、A_Point_list链表中,实体B的面、环、边和点的信息分别保存在B_Face_list、B_Loop_list、B_Line_list、B_Point_list链表中;实体的面为平面多边形,它可以只有一个外环,也可以有一个外环和一个或多个内环;步骤102:设置实体A和实体B的交换标志swap及布尔差运算标志sub_flag,定义并运算结果存储链表Body_list,并置swap=false,sub_flag=false;步骤103:给实体A和实体B的面做标记,如果是内环面则标记为非0,如果是非内环面则标记为0;内环面是指外环上的一条边是其他面的内环上的一条边的面;步骤104:遍历链表A_Point_list、A_Line_list、A_Loop_list、A_Face_list,求取实体A的包围盒值A.min.X.、A.min.Y、A.min.Z、A.max.X、A.max.Y、A.max.Z;遍历链表B_Point_list、B_Line_list、B_Loop_list、B_Face_list,求取实体B的包围盒值B.min.X.、B.min.Y、B.min.Z、B.max.X、B.max.Y、B.max.Z;步骤105:判断实体A的包围盒与实体B的包围盒是否相离,若不相离则转至步骤106,若相离则转至步骤117;步骤106:遍历实体A的链表A_Point_list、A_Line_list、A_Loop_list、A_Face_list,取实体A的一个面FA;步骤107:判断面FA是否在实体B的外面,如果面FA在实体B的外面则转至步骤118,否则转至步骤108;步骤108:遍历实体B的链表B_Point_list、B_Line_list、B_Loop_list、B_Face_list,取实体B的一个面FB;步骤109:判断面FA和面FB是否同向共面且都不是内环面,如果条件成立,转至步骤115,如果条件不成立,转至步骤110;同向共面是指几何上处在一个平面上且外法线矢量方向相同的两个或多个面;步骤110:用面FA的扩大面与面FB求交,交线段保存在链表A_inter_B中;面FA的扩大面是指与FA在一个平面上且边长足够大(取106)的正方形面;步骤111:判断实体B的面是否处理完,如果没有处理完,转至步骤108,如果处理完,转至步骤112;步骤112:将链表A_inter_B中的线段进行首尾相连构造环,将构造的环存入链表Loop_list中;用Loop_list中各环的法向量和面FA的法向量方向进行比较,若方向相同则环的顶点顺序不变,否则将环的顶点顺序反向排列;在Loop_list中找出内环,将内环顶点顺序反向排列;最后得到的环链表Loop_list即是用面FA的扩大面切实体B得到的剖面多边形F的数据;清空链表A_inter_B;步骤113:置布尔差运算标志sub_flag=true;步骤114:将剖面多边形F赋给面FB;步骤115:对面FA和面FB进行二维多边形的并运算,将运算结果保存在链表_out_中;链表_out_保存的是实体A和实体B三维并运算的部分结果;步骤116:判断实体A的面是否处理完,如果处理完,转至步骤119,如果没有处理完,转至步骤106;步骤117:令链表A_out_B=A_Face_list,链表B_out_A=B_Face_list,合并两个链表A_out_B、B_out_A到链表Body_list中,输出并运算结果链表Body_list;步骤118:保存实体A的面FA到链表_out_中,转至步骤116;步骤119:判断交换标志swap是否为true,如果是,转至步骤122,如果不是,则转至步骤120;步骤120:将链表_out_中的数据拷贝到链表A_out_B中,并清空链表_out_;步骤121:交换实体A和实体B的数据,即将实体B的面、环、边和点的信息拷贝给实体A,将实体A的面、环、边和点的信息拷贝给实体B,并置swap=true,转至步骤103;步骤122:将链表_out_中的数据拷贝到链表B_out_A中,并清空链表_out_;步骤123:合并链表A_out_B和链表B_out_A的数据到Body_list中,进行后处理,删除重复面和悬挂面;步骤124:合并同向共面且有重合线段的两个或多个面为一个面;步骤125:输出并运算结果链表Body_list。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201710711666.1/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top