多面体符合广义欧拉公式,而构造多面体的过程可以通过欧拉算子完成。原文地址如下:http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/model/euler-op.html

Euler Operators

Once a polyhedron model is available one might want to edit it by adding or deleting vertices, edges and faces to create a new polyhedron. These operations are called Euler Operators. However, it has been shown that in the process of editing a polyhedron with Euler operators, some intermediate results may not be valid solids at all.

Recall from the discussion of the Euler-Poincaré formula that the following holds for all polyhedra:

V - E + F - (L - F) - 2(S - G) = 0

where VEFLS and G are the numbers of vertices, edges, faces, loops, shells and genus, respectively. Based on this relation, some Euler operators have been selected for editing a polyhedron so that the Euler-Poincaré formula is always satisfied. There are two groups of such operators: the Make group and the Kill group. Operators start with M and K are operators of the Make and Kill groups, respectively.

Euler operators are written as Mxyz and Kxyz for operations in the Make and Kill groups, respectively, where xy and z are elements of the model (e.g., a vertex, edge, face, loop, shell and genus). For example, MEV means adding an edge and a vertex while KEV means deleting an edge and a vertex.

It has been proved by Mantyla in 1984 that Euler operators form a complete set of modeling primitives for manifold solids. More precisely, every topologically valid polyhedron can be constructed from an initial polyhedron by a finite sequence of Euler operators. Therefore, Euler operators are powerful operations.

The Make Group of Euler Operators

The Make group consists of four operators for adding some elements into the existing model creating a new one, and a Make-Kill operator for adding and deleting some elements at the same time. Here are the operators:

Operator Name Meaning V E F L S G
MEV Make an edge and a vertex +1 +1        
MFE Make a face and an edge   +1 +1 +1    
MSFV Make a shell, a face and a vertex +1   +1 +1 +1  
MSG Make a shell and a hole         +1 +1
MEKL Make an edge and kill a loop   +1   -1    

The above table shows the change of values of VEFLS and G. Note that adding a face produces a loop, the outer loop of that face. Therefore, when F is increased, L should also be increased. This new loop and the new face will cancel each other in the subexpression L - F. Please verify that none of these operators would cause the Euler-Poincaré formula to fail.

The following table illustrates the way of using Euler operators to construct a tetrahedron. Vertices, edges, and faces are in red, blue and green; the only shell is in transparent gray. The first step uses MSFV to obtain a shell with a face and a vertex. The next three steps use MEVs, each of which adds an edge and a vertex. The last three steps use MFE, each of which adds a face and an edge. Thus, in seven steps or seven Euler operators a tetrahedron is constructed.

Operator Name Meaning V E F L S G Result
MSFV Make a shell, a face and a vertex +1   +1 +1 +1  
MEV Make an edge and a vertex +1 +1        
MEV Make an edge and a vertex +1 +1        
MEV Make an edge and a vertex +1 +1        
MFE Make a face and an edge   +1 +1   +1  
MFE Make a face and an edge   +1 +1   +1  
MFE Make a face and an edge   +1 +1   +1  

MSG simply makes a shell with a hole. After this, one can add vertices, edges, faces, loops. There must be loops, because the new hole penetrates at least one face.

MEKL makes an edge and at the same time kills a loop. A commonly used MEKL is adding an edge connecting the outer loop and the inner loop of a face. In this case, the number of edges E is increased by 1 and the number of loops L is decreased by 1 since that loop is killed. The left figure below shows two loops of the top face while the right one shows the new edge added after performing a MEKL. Thus, the inner and outer are "joint" together with the new edge becoming a single face.

 

The Kill Group of Euler Operators

The Kill group just performs the opposite of what the Make group does. In fact, replacing the  M  and  K  in all Make operators with  K  and  M , respectively, would get the operators of the Kill group. Therefore, the Kill group consists of the following five operators:

Operator Name Meaning V E F L S G
KEV Kill an edge and a vertex -1 -1        
KFE Kill a face and an edge   -1 -1 -1    
KSFV Kill a shell, a face and a vertex -1   -1 -1 -1  
KSG Kill a shell and a hole         -1 -1
KEML Kill an edge and make a loop   -1   +1    

With these operators, one can start with a tetrahedron and reduce it to nothing. Since these operators are the opposites of the Make operators, we shall not go further here.

Euler Operators相关推荐

  1. 《UnityAPI.Quaternion四元数》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Quaternion+Angle+Dot+Euler+立钻哥哥++OK++)

    <UnityAPI.Quaternion四元数> 版本 作者 参与者 完成日期 备注 UnityAPI_Quaternion_V01_1.0 严立钻 2020.07.10 #<Uni ...

  2. 阿里巴巴图学习框架 euler 安装运行记录

    安装依赖 Euler的编译和启动依赖libhdfs.so和libjvm.so存在于$LD_LIBRARY_PATH中 更新软件源缓存 apt-get update 安装JAVA以及HDFS客户端环境 ...

  3. RxJS - Observables, observers 和 operators 简介

    RxJS 是响应式编程 (reactive programming) 强大的工具,今天我们将深入介绍 Observables 和 Observers 的内容,以及介绍如何创建自己的操作符 (opera ...

  4. 数学——Euler方法求解微分方程详解(python3)

    算法的数学描述图解 实例 用Euler算法求解初值问题 \[ \frac{dy}{dx}=y+\frac{2x}{y^2}\] 初始条件\(y(0)=1\),自变量的取值范围\(x \in [0, 2 ...

  5. Effective C++ 读书笔记之Part2.Constructors, Destructors, and Assignment Operators

    5.Know what functions C++ silently writes and calls. 总结:编译器可以暗自为class创建default构造函数.copy构造函数.copy ass ...

  6. 一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

    Abstract 弹性分布式流处理系统能够动态地适应工作负载的变化.通常,这些系统通过向上或向下扩展来对输入数据的速率或资源利用水平做出反应.目标是优化系统的资源使用,从而降低其运营成本.但是,这种扩 ...

  7. Python编程基础:第九节 逻辑运算Logical Operators

    第九节 逻辑运算Logical Operators 前言 实践 前言 常用的逻辑运算共分为三种:与(and).或(or).非(not).与运算就是同真才真,有假则假:或运算就是有真则真,同假才假:非运 ...

  8. (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

    题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...

  9. 北斗导航 | 坐标变换矩阵(CTM)与欧拉角(Euler)互相转换:Matlab源代码

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

最新文章

  1. UICollectionView的基本使用(1)
  2. Weex第一天:手势
  3. java中的二进制运算简单理解
  4. sports at liverpool
  5. oracle开发项目流程,如何开发ORACLE存储过程
  6. css中小知识点总结
  7. 网易实践|千万级在线直播弹幕方案
  8. Spring MVC DispatcherServlet介绍(2)
  9. 可伸缩视频编码svc
  10. mapreduce原理_Hbase Bulkload 原理面试必备
  11. R 中同步进行的多组比较的包:npmc
  12. OSX/Linux 配置SSH免密登录并配置(Alias)别名登录
  13. 条件概率与条件概率举例
  14. 9.高性能MySQL --- 操作系统和硬件优化
  15. steam怎么设公用计算机,steam怎么设置家庭共享 steam家庭共享设置方法
  16. python课程设计实验报告-Python语言课程设计报告格式.doc
  17. 特征向量的归一化方法
  18. 史上最全天气预报接口,含各类数据接口,历史数据,天气大数据,雷达云图、6要素数据,格点数据等
  19. 惠普磁带备份机支持备份几台服务器,03-惠普磁带自动备份产品家族.ppt
  20. 【Java线程池实现原理及其在美团业务中的实践】

热门文章

  1. Java第十四课——相声和群口相声
  2. UE4入门实例20(Unreal制作简单魔法阵粒子)
  3. java 大转盘算法_大转盘 算法介绍
  4. 开机慢的几种解决方案
  5. [BZOJ1112]砖块klo Treap
  6. iOS平台使用陀螺仪传感器
  7. Python 离线安装第三方库详解
  8. 小程序开发获取token值
  9. Python Django Huey
  10. 如果你看不懂KMP算法,那就看一看这篇文章( 绝对原创,绝对通俗易懂)