几何算法——10.欧拉操作

  • 1 欧拉操作
    • 1.1 欧拉操作的设计思想
    • 1.2 欧拉操作的选取
    • 1.3 几个典型的欧拉操作
      • 1.3.1 Skeletal Primitives
      • 1.3.2 Local Manipulations
        • 1.3.2.1 MEV
        • 1.3.2.2 MEF
        • 1.3.2.3 KEMR
      • 1.3.3 Global Manipulations
    • 1.4 一个欧拉操作的实例
    • 1.5 欧拉操作的三点结论
  • 2. 非流形体
    • 2.1 非流形模型(non-manifold model)
    • 2.2 扩展的欧拉公式

1 欧拉操作

欧拉操作,是由 B.G. Baumgart 于1972年提出,目的是提供有效、正确地建立三维物体复杂的边界数据结构的方法(保证有效性、保证通用性)。

1.1 欧拉操作的设计思想

(1) 提供少数几个公用的边界数据结构生成操作,使得三维物体复杂的边界数据结构可通过这些公用操作逐步构造完成。
(2) 基于欧拉公式保证使用公用数据结构生成操作所生成的边界数据结构具有拓扑有效性。

欧拉公式: v(点数)-e(边数) + f(面数) = 2(s(分离体数) – h(通孔数))+ r(内环数)

以一个立方体为例:

有8个顶点,12条边,6个面,只有1个体,0个通孔,0个内环。

再以一个带孔的立方体为例:

有16个顶点,24条边,6个面,只有1个体,1个通孔,2个内环。也满足欧拉公式。

对于圆环,可以看作是这个带洞立方体的拓扑同胚,也满足欧拉公式:
如果将绿色当作一条真实的边:2 - 4 + 2 = 2(1 - 1) + 0。
如果绿色不当作真实的边:1 - 2 + 1 = 2 (1 - 1) + 0。

对于圆柱体,也满足欧拉公式(4 - 6 + 4 = 2 *(1 - 0) + 0)。

1.2 欧拉操作的选取

原则:取具有明显几何意义的基:造点、造边、造环、造面、造体

本文中使用的名称的关键字如下:

For instance, the name “mev” translates as “Make Edge, vertex”.

C.Braid 所取了一组基:
mvfs,mev,mef,kemr,kfmrh

1.3 几个典型的欧拉操作

对于拓扑的操作分为三大类,若干小类。
三大类是:Skeletal Primitives,Local Manipulations和Global Manipulations。
Skeletal Primitives是指构造一个skeletal plane model,它是从无到有构造更复杂模型的基础,对应拓扑操作就是MVFS。
局部拓扑操作又分为若干小类:在skeletal plane model的基础上,其他的各种不改变亏格的模型都可以在此基础上,通过Local Manipulations生成出来。
全局拓扑操作:由于skeletal plane model是一个亏格为0的模型(如下图9.2,类似立方体,亏格为0,没有洞)。想构造亏格大于0的模型(如下图9.3),如甜甜圈(亏格为1的模型),或者多个甜甜圈粘合在一起的(亏格大于1的模型),就需要Global Manipulations。

1.3.1 Skeletal Primitives

MVFS
功能:定义一个体、一个面(含一个外环)、一个点。
其对应的反操作为:KVFS,功能与MVFS刚好相反。

1.3.2 Local Manipulations

1.3.2.1 MEV

MEV
功能:定义一个新点,同时定义一条连接新点与另一给定点的边。
其对应的反操作为:KEV

1.3.2.2 MEF

MEF
功能:以两给定点为端点定义一条新的边,同时定义一个新的面(含一个新的环)。
其对应的反操作为:KEF

1.3.2.3 KEMR

KEMR
功能:消去环中的一条边,定义一个内环。
其对应的反操作为:MEKR

1.3.3 Global Manipulations

KEMRH
功能:删除一个面,并将其定义为另一个面的内环,进而在体中生成一个通孔或将两物体合并成一个物体。
其对应的反操作为:MFKRH

1.4 一个欧拉操作的实例

用欧拉操作构造右侧物体(长方体内带方形通孔)

1.5 欧拉操作的三点结论

Mantyla从理论上得到了以下结果:
(1) 所有流形体的边界表示都可由欧拉操作构造出来;
(2) 由欧拉操作构造出的边界表示在拓扑结构上一定是有效的;
(3) 将这种表示正确地嵌入欧几里德空间结果一定是流形体。

2. 非流形体

2.1 非流形模型(non-manifold model)

非流形体引起集合运算算法上的困难,因此传统的实体造型系统都限定处理正常的情况,即要求形体是正规集,它的边界必须拓扑等价于流形。

实体造型技术从流形转向非流形,一方面有理论研究上的意义,但更重要的是出于工程应用上的实际需要。

2.2 扩展的欧拉公式

V – E + F = 2(S - H) + R

(V - Vr) – (E – Er) + (F - Fr) – I = 2(S - H)

Vr: 与迷向点相连的伞数-1
Fr:内环数
Er: 与迷向边相连的楔数-1
I: 孤立的几何元素的数目

几何算法——10.欧拉操作相关推荐

  1. 三维CAD建模 基于Brep的扫成与欧拉操作

    基于B-rep的建模操作及其算法 欧拉操作 基于B-rep的建模操作及其算法 上了高老师的cad课,高老师的课十几年来不变的大作业就是基于半边结构的5个欧拉操作和sweep扫成cad模型的实现,以下是 ...

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

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

  3. C++primer第十章 泛型算法 10.3 定制操作

    10.3定制操作 很多算法都会比较输入序列中的元素.默认情况下,这类算法使用元素类型的<或==运算符完成比较.标准库还为这些算法定义了额外的版本,允许我们提供自己定义的操作 来代替默认运算符. ...

  4. 数据结构与算法:欧拉筛——查找素数(质数)的最优解算法 O(n)

    前言:众所周知,查找素数是算法题中最基础的问题,也是经常被问到的问题.            但往往同学们找不到最优解法,因而导致 时间复杂度 过大而超出限制.            下面列出常用的求 ...

  5. 【算法】欧拉函数公式证明

    定义 欧拉函数 φ ( n ) \varphi(n) φ(n)表示小于等于 n n n且与 n n n互质 ( g c d ( x , n ) = 1 ) (gcd(x,n)=1) (gcd(x,n) ...

  6. Fleury算法找欧拉环游

    算法思路 任意选择一个顶点v0v0v_0, 假设已经确定好了前面的路径了.在剩下的边中选一个新的边 这个新的边需要跟它前面的那个点要相关联 除非没有点可以选,否则不能是剩余子图的割边. 一直到等这个步 ...

  7. 算法 {欧拉函数,欧拉定理,费马小定理}

    欧拉函数 定义 ϕ ( x ) , x ∈ N + \phi(x), \ \ x \in N^+ ϕ(x),  x∈N+ means the number of y ∈ N + y \in N^+ y ...

  8. 数学建模——欧拉算法(求解常微分方程)

    欧拉算法 定义 定义:在数学和计算机科学中,欧拉方法,命名自它的发明者莱昂哈德·欧拉,是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解.它是一种解决数值常微分方程的最基本的一类显型方法 ...

  9. 多线程之基于积分法与欧拉恒等式法的圆周率计算及OMP优化

    文章目录 一.问题描述 二.积分法 算法推导 编程实现 OMP优化 三.欧拉恒等式 算法推导 编程实现 前期准备 加法 减法 乘法 除法 算法实现 OMP优化 四.总结 积分法与欧拉恒等式法的对比 O ...

最新文章

  1. oracle sql语句中包含‘’ 的解决方法
  2. eclipse 高效快捷键大全
  3. 史上最易懂的 Kubernetes 儿童插图指南
  4. sas中的sql(2) 行选择 、限制重复、条件运算符、运行前语法检查、feedback、count...
  5. Python基础-XML模块
  6. java uncked_使用FindBugs对SpringSide1.0m3进行分析的结果
  7. 06jQuery-01-基本选择器
  8. html网页加密最终版,【原】记一次加密网页html的研究
  9. matlab读取正则找科学,MATLAB常用正则表达式记录
  10. JavaFX鼠标拖拽事件
  11. php smarty模板配置,Smarty模板简单配置与使用方法示例
  12. 什么是闪电网络节点_为什么以及如何计划闪电谈话
  13. 洛谷2142高精度减法(模板)
  14. 项目中用了spring这些牛逼的开发技巧,经理请我吃饭了
  15. 基于高德地图api的热力图配置及显示调优
  16. 电子签章服务器位置的确定,一文看懂如何实现服务端电子签章
  17. lastwinner分红系统开发
  18. Vivado工程清除中间文件
  19. 【手把手带你Godot游戏开发】FlappyBird:4.1无限地面之Godot青年(AnimationPlayer)版
  20. 什么是令牌桶(Token Bucket)?

热门文章

  1. 深信服防火墙多线路负载导致财务网银无法使用的解决办法
  2. libharu4delphi 输出文字初探
  3. 2016年我国能源行业大数据的发展现状及市场分析
  4. lis通道号_求助TRPV1通道激活问题
  5. 8251 串行接口应用实验
  6. EFI 分区/恢复分区不可删除?你需要使用命令行了(配合鼠标操作)
  7. matlab找出定价规律,基于MATLAB建立数学模型对定价系统的研究
  8. 黑马优购_微信小程序
  9. 程序员如何通过博客来学习java
  10. 智能安防系统基本结构组成