Computational Conformal Geometry Library - CCGL
CCGL logo

Introduction

Getting CCGL
    Download
    Installation


Development Guide
    Architecture
    Performance


Gallery
    Snapshots
    Movies

Mesh Data Structure
    Viewer

Topology
    Cut Graph
    Slicer
    Double Cover
    Homology Basis

Conformal Maps
    Harmonic Map
    Spherical Harmonic Map
    LSCM

Holomorphic 1-Form
    Integration
    Harmonic 1-Form
    Holomorphic 1-Form
    Slit Map

Curvature Flow
    Euclidean Ricci Flow
    Poly Annulus Ricci Flow
    Hyperbolic Ricci Flow
    Yamabe Flow

Documentation
    Reference Book

Acknowledgements
Yamabe Flow

heads
heads
heads
a. face.nf50k.m
b. face.nf50k.uv.m
c. face.nf50k.pos.m
heads
heads
heads
a. face.nf50k.m
b. face.nf50k.square_uv.m
c. face.nf50k.square_pos.m

Algorithm Description

User specifies the target Gaussian curvature at each vertex. Yamabe flow computes a unique metric, which induces the prescribed curvature. Current version set all interior vertex curvature to be zeros, in practice, user can specify arbitrary target curvatures for them. For example, user can concentrate all curvatures at a special vertex, or uniformly at all vertices. The target curvature can be dynamic during the optimization also.

Input and output The input is a mesh with general topology

  • a mesh, e.g. face.nf50k.m
  • User specify the target curvature. In the first example, the boundary curvature is 2PI/n, where n is the number of boundary vertices. In the second example, four boundary vertices are selected, where the curvature is PI/2, the other vertices have zero curvatures.
The output is
  • The mesh with uv coordinates determined by the target flat metric, e.g.face.nf50k.uv.m

Command
For face mesh
   YamabeFlow.exe face.nf50k.m face.nf50k.uv.m

Target Curvature

   Target curvature can be set by the user, as long as the total target curvature is 2PI times Euler number of the mesh.

Convergence and Stability

   The stability is mainly determined by the connectivity and the geometry of the mesh. In theory, if the target curvature is outside the admissible curvature space of the mesh, then the program will terminate abnormally. In order to ensure the target curvature to be admissible, the following hints are useful:

  • The number of faces attaching to a vertex is called the vertex valence. The vertex valence should be greater than 2(2PI-K)/PI, where K is the target curvature.
  • Special attention needs to be paid to boundary vertices. Remove all valence 1 boundary vertices.
Yamabe flow is capable of modifying connectivity during the optimization.

Example

   The input face mesh has 50k faces. The computational time is about 10 seconds on a PC with 3.0 GB of RAM, 3.60 GHz CPU. The data set can be downloaded. Please contact David Gu for the source code.