• 基于B-rep的建模操作及其算法

    • 欧拉操作

基于B-rep的建模操作及其算法

上了高老师的cad课,高老师的课十几年来不变的大作业就是基于半边结构的5个欧拉操作和sweep扫成cad模型的实现,以下是高老师上课时讲的一些干货,brep的基础知识请自行百度。

欧拉操作

  1. 欧拉公式
    欧拉公式是基于初中的欧拉公式v-e+f=2的拓展,在有内环(洞)的时候也能成立,欧拉操作就是基于欧拉公式的操作

v(vertice)-e(edge)+f(front)=2(s(solid)-h(handle穿透))+r(内环) 整体构造成5维超平面

  1. 欧拉操作的基本思想

    • 提供一组通用的完备的‾\underline{通用的完备的}通用的完备的​拓扑结构生成操作
    • 基于欧拉公式使其具有一定的有效性‾\underline{有效性}有效性​
  2. 欧拉操作的选取

    v e f h r s meaning
    1 1 0 0 0 0 mev
    0 1 1 0 0 0 mef
    1 0 1 0 0 1 mvfs
    0 -1 0 0 1 0 kemr
    0 0 -1 1 1 0 kfmre
    • 其中k=kill m=make vfs如上
    • 有时s=split
    • 增加一个操作semv
    • 每个操作都有一个逆操作 用k替换m用m替换k 总计12个操作
  3. 欧拉操作的功能与实现
    以简单的两个操作为例:

    • mvfs

      • 构造一个体,外面和边,这里编程时注意,在构造一个无依赖边的点的时候也构造了一个空面和一个空体
      • lp->ledge=NULL
    • mev
      • 构造一个新点,和一个接新点和给定点的边
      • HalfEdge * mev(v1,lp) lp=loop
        有效性原则,使得新定义的半边与其所属环中的其他半边形成一个有向封闭的环。

数据结构

本项目主要基于qt5开发

#ifndef DS_H
#define DS_H
#include <QWidget>
#include <stdlib.h>
#include <QVector3D>
#include <vector>
#include <iostream>
#include <QDebug>
using namespace std;
class Solid;
class Face;
class Loop;
class HalfEdge;
class Vertex;
class Edge;class Solid
{public:Face *faces; // list of all faces to construct this solidEdge *edges; // list of all edges to construct this solidvoid printEdge();Solid() : faces(nullptr), edges(nullptr){}
};class Face
{public:int id;Solid *solid; // the solid which the face belong toLoop *outLp; // out loop of the face--construct the faceLoop *innerLp;//inner_lp of the face--inner loopFace *next;//for face list in solidFace *pre;static int numFace;void addInerLoop(Loop *&l);Face() : id(0), solid(nullptr), outLp(nullptr), innerLp(nullptr),next(nullptr),pre(nullptr){id=numFace++;}~Face();
};class Loop
{public :int id;static vector<Loop*> loopArray;//an Automatic maintenance  pointer arraystatic int numLoop;HalfEdge *halfedges; // list of all halfeges to construct this loopFace *face; // the face that constructed by this loopLoop *next;Loop *pre;QVector3D normal;void printLoop();//print Loop halfedge info for DebugQVector3D getOritation();//get normal 3DvectorLoop() : id(0), halfedges(nullptr), face(nullptr), next(nullptr), pre(nullptr){loopArray.push_back(this);id=numLoop++;}//for sake of plot loop
};class Edge
{public:HalfEdge *half_l; //the edge's left halfedgeHalfEdge *half_r; //the edge's right halfedgeEdge *next;Edge *pre;int id;static int numEdge;Edge() : half_l(nullptr), half_r(nullptr), next(nullptr), pre(nullptr){id=numEdge++;}
};class HalfEdge
{public:Edge *edge; //this halfedge belong to which edgeVertex *sv; //the start vertex of this halfedgeVertex *ev; //the end vertex of this halfedgeLoop *lp; //pointer to the loop that this halfedge belong toHalfEdge *next;HalfEdge *pre;HalfEdge *brother;//uselessvoid printHfEdge();HalfEdge() : edge(nullptr), sv(nullptr), lp(nullptr), next(nullptr), pre(nullptr), brother(nullptr){}
};class Vertex
{public:int id;static vector<Vertex*> vertexArray;//an Automatic maintenance  pointer arrayQVector3D coordinate;//coordinate of the vertex (x, y, z)Vertex *next;Vertex *pre;static int  numVertex;Vertex(QVector3D q) : next(nullptr), pre(nullptr){coordinate=q;id=numVertex++;vertexArray.push_back(this);}
};
#endif

图形交互界面

下载地址:https://download.csdn.net/download/yhf_naive/10813480

三维CAD建模 基于Brep的扫成与欧拉操作相关推荐

  1. 三维CAD建模——基于半边数据结构的基本欧拉操作建模

    三维CAD建模--基于半边数据结构的基本欧拉操作建模(elar, B_REP) (欧拉操作  三维CAD建模课 三维CAD建模 高曙明老师  渲染框架 brep 带洞 带柄 B_REP brep el ...

  2. CAD图纸编辑完成后保存成PDF格式怎么操作?

    平时在我们对CAD图纸的绘制过程中,经常需要对CAD图纸的格式进行转换,因为CAD格式的图纸在一般常见的看图软件中是无法打开的,需要在特定的环境中才可以打开,这就需要我们在图纸绘制完成后保存为易于查看 ...

  3. 完成三维Cad建模Solidworks课程

    从零到专业学习素描,零件建模,装配,绘图,渲染,动画 你会学到什么 完成本课程后,您将能够自信地制作复杂的3D CAD模型 准备好在真实的行业环境中运用你的技能 通过创建从草图到视频动画的产品,在更广 ...

  4. 机械臂动力学建模(3)- Newton Euler牛顿欧拉算法

    Newton Euler算法 参考 思路(参考丁教授第二讲ppt) 矢量在不同坐标系下的转换关系 速度的递推 重心处的力和力矩 力的递推 完整公式 代码 参考 北航丁希仑教授的机器人动力学课件: 检出 ...

  5. 三维CAD——基于B_rep的建模操作

    内容来自高老师的<三维CAD建模>课,本文就主要介绍半边结构和欧拉操作以及代码实现. 1. 边界表示法及其数据结构 · 拓扑结构 a.拓扑元素:面.边.点.体 b.拓扑关系:9种.V{V} ...

  6. 二维和三维CAD设计Autodesk AutoCAD 2021

    Autodesk AutoCAD 2021 是一款Autodesk公司发布的非常强大的二维和三维CAD设计软件.用于二维绘图.详细绘制.设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具.具有 ...

  7. 三维地质建模数据处理

    三维地质建模计算在地质工程.地球物理.矿产勘查等领域获得了广泛的应用,常用软件包括GOCAD.Surpac.XModel.DMine等.通过三维地质建模,既可以表达空间几何对象,也可以表现空间属性分布 ...

  8. 怎样把CAD图纸的背景颜色修改成白色?

    1.先启动运行CAD看图软件.然后点 击菜单栏里的[文件]-[打开]选项,选择需要查阅的CAD图纸在CAD看图软件中打开. 2.我们想要修改CAD图纸的背景颜色,可以点 击软件菜单栏中修改背景颜色的图 ...

  9. CrownCAD首席技术官:梅敬成博士亮相中国国际软件发展大会(基于云架构的国产自主三维CAD平台——CrownCAD )

    "2022中国国际软件发展大会暨第五届软件产业年会",给大家介绍一下华天软件研发的国内首款.完全自主.基于云架构的三维CAD平台 CrownCAD(也就是皇冠CAD). 什么是工业 ...

最新文章

  1. Apache用户认证,域名跳转
  2. java 基本类型的引用_Java中的基本数据类型与引用数据类型
  3. Fiddler代理手机抓包
  4. 完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分
  5. java获取文件列表_java获取指定目录中的文件列表
  6. springboot 日志级别_SpringBoot实战(十三):Admin动态修改日志级别
  7. switch删除用户显示正在维护服务器,Switch即将迎来6.0更新 账号与用户无法再正常解绑...
  8. 冯乐乐之六,基础光照模型
  9. 能气死古人的诗歌改编
  10. Mysql 索引为啥使用B+树?不用哈希或B树?红黑树?
  11. 微信小程序 获取用户的昵称和头像
  12. Win11游戏模式怎么开启?Win11开启游戏模式的方法
  13. db2 replace函数的用法_总结篇--SUBSTITU函数实用终极帖
  14. 放不下的原理_想要彻底忘记一个人,明白“洛克定律”的真实原理就可以
  15. Linux、Windows获取主板序列号和UUID
  16. Matplotlib 学习之:给图片 / 图片的子图添加颜色条/渐变条(colorbar)
  17. 国王游戏——高精度好题
  18. LeetCode 558. 四叉树交集
  19. 网站底部添加备案号和链接
  20. 三洋服务器Q系列报警代码,三洋伺服故障报警维修

热门文章

  1. python 有没有禁用网络的方法_如何在Python Cod中禁用网络连接
  2. 金融量化-股债平衡交易策略—面向对象实现 仓位控制
  3. 计算机考试邮件操作题,计算机考试操作题主要知识点
  4. 安装了Tomcat Plugin插件,为什么没有出现三个Tomcat的猫图标的解决方法
  5. vue指令的高级选项
  6. acwing 背包问题
  7. IDEA如何彻底删除项目
  8. 安全联盟2017年上半年网络诈骗数据报告
  9. RestCloud服务编排平台,API可视化编排
  10. 从零学Java(7)之数据类型,小AD竟然solo不过小朋友