読者です 読者をやめる 読者になる 読者になる

tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

「Digital Geometry Processing with Discrete Exterior Calculus」第4章を読んだ

読書メモ 数学 外微分 C、C++ 微分幾何

第4章は微分幾何とは特に関係がなさそうだが立体の感覚を養うためかオイラーポアンカレの定理などトポロジーの話題が出てくる。コーディングの話題もある。

4.1 Euler標数

種数(穴の数)をgとしたとき、 $$ V - E + F = 2 - 2g $$ を示せ。

略証:

f:id:kuyata:20141012174901p:plain

平面の場合については、$V - E + F = 1$が成立する。球(g=0)は2分割すると平面になることから示せる。それ以上の種数については穴が残るように切り開くことで証明できる。

4.2 正則メッシュ、平均価数

テッセレーション(多面体を細かく分割する)

  • 正則価数

ある頂点についてその頂点を含む面の個数を価数といい、全ての価数が等しい時にその曲面が正則だという。連結で方向付け可能な単体曲面(全ての面が三角形)が正則なときg=1しかないことを示せ。ただし面は無限にあるとして良い。(証明略)

  • 最小非正則価数

連続で方向付け可能だが非正則な単体曲面について、非正則な頂点の最小個数が以下で表されることを示せ。ただし価数は少なくとも3以上で面は無限にあるとする。 $$ m(K) = \begin{cases} 4 &g=0\\ 0 &g=1\\ 1 &g\geq 2\\ \end{cases} $$

略証: それぞれの頂点に属する辺、面を数えてオイラーポアンカレの定理に代入することで必要条件が示せる。十分条件はそれぞれ具体例を構成すればいい。

  • 平均価数

連続で方向付け可能な単体曲面について面が無限にあるとき$V : E : F = 1 : 3 : 2$を示せ。(証明略)

4.3 ガウス・ボンネ(ガウス・ボネ)の定理

  • 球面上の三角形の面積

球面上の三角形の面積を角度$\alpha_{1,2,3}$を用いて、$A = \alpha_{1} + \alpha_{2} + \alpha_{3} - \pi$と表せることを示せ。

http://brickisland.net/cs177fa12/wp-content/uploads/2012/10/spherical_triangle.svg

  • 球面多角形の面積$A = (2-n)\pi + \sum_{i=1}^{n}\beta_{i}$を示せ。(証明略)

  • 欠損角

直線のなす角は単位法線のなす角で測ることができた。ある頂点で面のなす「角」はそれぞれの面の法線が単位球上に作る多角形の面積で測る。これを欠損角といい、$F_{v}$を頂点vを含む面としたときにfがvで作る内角$\angle_{f}(v)$で以下のように表されることを示せ。

$$ d(v) = 2\pi - \sum_{f \in F_{v}} \angle_{f}(v) $$

http://brickisland.net/cs177fa12/wp-content/uploads/2012/10/angle_defect.svg

略証: 単位球で出来る二等辺三角形に注目して角度を計算すると示せる。

連続で方向付け可能な単体曲面について、オイラー標数$\chi = V-E-F$を用いると、欠損角の合計が以下で表されることを示せ。ただし面は無限にあるとして良い。 $$ \sum_{v \in V}d(v) = 2\pi\chi $$

略証: 全ての頂点で面が作る内角の和を計算したのち、オイラー・ボアンカレの定理で式変形してやると示せる。

4.4 プログラム

total curvature

  • Coding 1.
# include <math.h>

double Vertex::angleDefect(void) {
  double angle = 0;

  Vertex start = end = he;
  while (end->flip != he) {
    while (end->next != start) {
      end = end->next;
    }
    angle += acos( dot(unit(start), -unit(end)) ));
    start = end->flip;
    end = start;
  }

  return(2*pi - angle);
}
  • Coding 2.
# include <Vector.h>

double Face::area(void) {
  return( norm(cross(he, he.next.next)) );
}
  • Coding 3.
double Vertex::area(void) {
  double area = 0;
  while ( != ) {
  }
  area += he.face.area()
  return(  )
}
  • Coding 4.
double Mech::totalGaussianCurvature() {

}
  • pointwise curvature estimate

単語

  • disk: 円板
  • polygon: 多角形
  • polyhedron: 多面体
  • piecewise linear surface: 区分線型曲面(多角形をつなげて作ったもの)
  • simplicial surface: 単体曲面(三角形の面でできた区分線型曲面)
  • boundary: 境界(1つの面にしか含まれていない辺。図形全体の端っこ)
  • Euler-Poincare formula: オイラーポアンカレの定理
  • handle: ハンドル体
  • genus: 種数
  • valence: 価数
  • regular: 正則な(regular polyhedronだと正多角形だったりするらしい)
  • angle defect: 欠損角
  • discrete Gaussian curvature:
  • Gauss-Bonnet theorem: ガウス・ボンネの定理
  • Euler charcteristic: オイラー標数