本文主要是介绍欧拉公式推导网格中点线面估计数量关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。
背景
- 之前面试网格算法工程师时被问到三角网格中点和面的数量关系。
- delaunay 三角剖分要估计边的数量来事先申请内存。
通过查找资料了解原理和推导过程。
欧拉公式
欧拉公式描述如下:V、E和F分别是点、边和面的个数。 所有和一个球面同胚的多面体点边面的关系为:
F − E + V = 2 F-E+V=2 F−E+V=2
半边数据结构
在计算机图形学中,习惯使用半边数据结构来表示网格。
一条边最多由2个面共享,把边分成正向和反向2条半边。
一共有2E个半边。
推导过程
根据半边数据结构可知,每个面有3个半边
一共有3F个半边。3F=2E=>E=3/2F。
代入欧拉公式替换E得到点与面关系
− 1 2 F + V = 2 = > V = 1 2 F + 2 -\frac 1 2F+V=2 => V =\frac 1 2 F+2 −21F+V=2=>V=21F+2
代入上述公式替换F得到点与边关系
V = 1 3 E + 2 V =\frac 1 3 E+2 V=31E+2
结论
面与边关系
3 F ≈ 2 E 3F\approx 2E 3F≈2E
点与面关系
2 V ≈ F 2V\approx F 2V≈F
点与边关系
3 V ≈ E 3V\approx E 3V≈E
由于网格亏格的存在,以及网格中的边界,数量上不可能完全和上述公式吻合。所以这里只是一个大概情况。对于内存的估计和网格质量检查已经完全够用了。
本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接。
这篇关于欧拉公式推导网格中点线面估计数量关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!