日期:2023年9月27日标签:ComputerGraphics

欧拉泊松公式(Euler-Poincaré Formula) #

欧拉泊松公式定义:V - E + F - (L - F) - 2(S - G) = 0。其中各个符号含义如下:

  • V: vertices 的数量
  • E: edges 的数量
  • F: faces 的数量
  • G: 贯穿几何体的洞(hole)的数量,贯穿几何体的 hole 在拓扑结构中被成为 genus
  • S: shells 的数量,shell 是由二维流行(2-manifold)surface 包裹而成,一般你看到的一个几何实体(solid)就是一个 shell
  • L: loops 的数量,face 的外轮廓为 outer loop,face 中可能包含多个 hole(洞),每个 hole 是一个 inner loop(内轮廓)

欧拉泊松公式表达了上述几何单元之间的关系。

案例 #

1、下面是一个 solid,它包含一个没有贯穿 solid 的洞

solid

将其中拓扑单元带入公式:V-E+F-(L-F)-2(S-G) = 16-24+11-(12-11)-2(1-0)=0

2、下面是一个 solid,有一个 genus(贯穿 solid 的 hole)

solid

将其中拓扑单元带入公式:V-E+F-(L-F)-2(S-G) = 16-24+10-(12-10)-2(1-1)=0

3、由两个 shell 组成的几何

solid

带入公式:V-E+F-(L-F)-2(S-G) = 24-36+16-(18-16)-2(2-1)=0

更复杂的情况 #

有时候你可能没法确定 genus 的数量,例如下面这种,它有 3 个 genus 吗?

solid

我们首先要了解一个概念:拓扑变换(topological transformations)

应用拓扑变换,即我们可以对模型进行拉伸、挤压、扭曲变形等操作,但是不能裁剪掉某个部分。对一个模型应用拓扑变换后,模型所包含的拓扑单元不会发生变化,该模型仍然满足欧拉泊松公式。

所以我们首先将上述模型进行拓扑变换,即对其进行拉伸、挤压、扭曲等操作。

首先,将其中间“掏空”,使其变薄。

solid

再将顶部的圆洞扩大至下面这种半球形结构,然后再将半球形结构按平整。

拓扑变换

此时,经过一系列变换后的模型包含有两个贯穿的洞,所以它有两个 genus。你可以试着将它的拓扑结构带入欧拉泊松公式。

(完)

目录